是否可以通过属性改变类的结构?

本文关键字:结构 改变 可以通过 属性 是否 | 更新日期: 2023-09-27 18:02:29

现在我正在阅读"CLR via c# "这本书,我对以下问题感兴趣-是否有可能通过这样的属性来改变类的结构:

[UseFooAttr(true)]
class A
{
  if (IsDefined(typeof(UseFooAttr)))
    public Foo FooProperty{get; set}
};

但我不确定,这种方法是否有一些真正的好处。

是否可以通过属性改变类的结构?

不可能。但是您可能想使用条件编译:

#define UseFooPropertery // define pre-processor symbol
   class A
   {
#if UseFooProperty // check if symbol is defined
       public Foo FooProperty{get; set}
#endif
   }

除了#if/#endif预处理器指令,你还可以使用Conditional属性:

#define UseFooPropertery // define pre-processor symbol
   class A
   {
       [Conditional("UseFooPropertery")]
       public Foo FooProperty{get; set}
   }

您可能希望在项目设置中定义符号,而不是将它们放在代码中。