2016-08-16 49 views
0

現在我「通過C#CLR」的書閱讀,而我感興趣的以下問題 - 是否可以通過屬性來改變類的結構是這樣的:是否可以通過屬性更改類的結構?

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

但我不知道,這種方法有一些真正的好處。

回答

1

不,這是不可能的。但是你可能需要使用conditional compilation

#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} 
    } 

你可能想define the symbol in your project settings代替推杆他們在你的代碼中。

相關問題