我可以创建一个将从发布代码中删除的属性吗?
Can I create an attribute which will be stripped out of release code?
我想做这样的事情:
[Notes("Remember to blah blah blah")]
public class Foo {
[Notes("Redo this to include blah blah")]
public string Bar { get; set; }
// etc.
}
我知道 ConditionalAttribute
,但它是密封的,所以我不能从它继承我的 NotesAttribute
。
这可以做到吗?
您可以从这里获取 ConditionalAttribute
的源代码:
http://referencesource.microsoft.com/#mscorlib/system/diagnostics/conditionalattribute.cs
然后您只需复制代码并重命名 class 即可获得您的属性。
一个可能的解决方案是使用预处理器:
https://msdn.microsoft.com/en-us/library/4y6tbswk.aspx
#if DEBUG
[Notes("Remember to blah blah blah")]
#endif
public class Foo {
[Notes("Redo this to include blah blah")]
public string Bar { get; set; }
// etc.
}
是的,这是可以做到的!
看我的.
您需要这样做:
[Conditional("DEBUG")]
public class NotesAttribute : Attribute { }
我想做这样的事情:
[Notes("Remember to blah blah blah")]
public class Foo {
[Notes("Redo this to include blah blah")]
public string Bar { get; set; }
// etc.
}
我知道 ConditionalAttribute
,但它是密封的,所以我不能从它继承我的 NotesAttribute
。
这可以做到吗?
您可以从这里获取 ConditionalAttribute
的源代码:
http://referencesource.microsoft.com/#mscorlib/system/diagnostics/conditionalattribute.cs
然后您只需复制代码并重命名 class 即可获得您的属性。
一个可能的解决方案是使用预处理器:
https://msdn.microsoft.com/en-us/library/4y6tbswk.aspx
#if DEBUG
[Notes("Remember to blah blah blah")]
#endif
public class Foo {
[Notes("Redo this to include blah blah")]
public string Bar { get; set; }
// etc.
}
是的,这是可以做到的!
看我的
您需要这样做:
[Conditional("DEBUG")]
public class NotesAttribute : Attribute { }