现在我正在阅读"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}
}
您可能希望在项目设置中定义符号,而不是将它们放在代码中。