09.08.2018 Атрибуты и ограничения
 
У Рихтера и вообще многих авторов пишут что атрибуты можно ограничить применимость (классам, интерфейсам, методам и т.д. короче все задается флагами AttributeTargets)

Но если обратить внимание на один хитрый атрибут(напишу ниже), то оказывается ограничение можно делать более сложным!
А вот пример этого хитрого и всем знакомого атрибута
        [StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
        public struct SomeStruct1
        {
            [FieldOffset(0)]
            public bool value;
        }

        [StructLayout(System.Runtime.InteropServices.LayoutKind.Explicit)]
        public struct SomeStruct2
        {
            [FieldOffset(0)]
            public bool value;
        }

Как мы видим что атрибут FieldOffset реагирует во время компиляции на значение перечисление LayoutKind

Кто-то реализовывал такие хитрые ограничения атрибутов? Или это чисто фишка компилятора сделана только для FieldOffsetAttribute ???
Я всегда делал проверку на валидность во время выполнения, но считаю иногда очень удобно это делать на уровне компиляции. Кто-нибудь разбирался с этим вопросом?

 
 
 
 
10.12  .NET Reactor
15.11  n
15.11  C# ClickOnce
 
14.08  return и ?
24.07  ms sql
18.07  NPOI Word