Search code examples
c#visual-studio-2010stylecop

stylecop: curly bracket inside square bracket


How would I get stylecop to accept something like:

string something = _someDict[new CompositeKey<EnumA, EnumB> { Item1 = EnumA.A, Item2 = EnumB.D }];

Is this a collision between rules SA1011 and SA1013?

For your copy-and-paste convenience:

private Dictionary<CompositeKey<EnumA, EnumB>, string> _someDict = new Dictionary<CompositeKey<EnumA, EnumB>, string>
{
    { new CompositeKey<EnumA, EnumB> { Item1 = EnumA.A, Item2 = EnumB.D }, "AD" },
    { new CompositeKey<EnumA, EnumB> { Item1 = EnumA.B, Item2 = EnumB.D }, "BD" },
    { new CompositeKey<EnumA, EnumB> { Item1 = EnumA.A, Item2 = EnumB.E }, "AE" },
    { new CompositeKey<EnumA, EnumB> { Item1 = EnumA.B, Item2 = EnumB.E }, "BE" },
};

private enum EnumA
{
    A, B
}

private enum EnumB
{
    D, E
}

private struct CompositeKey<T1, T2>
{
    public T1 Item1;
    public T2 Item2;
}

Solution

  • I don't think it's possible.

    If you really care that much about the rules, and to make your code more readable, I suggest:

    var key = new CompositeKey<EnumA, EnumB> { Item1 = EnumA.A, Item2 = EnumB.D };
    string something = _someDict[key];