我想创建一个在构建过程中执行的自定义属性,并且可以根据某些逻辑中断构建,非常类似于System.ObsoleteAttribute
。
例如,请考虑以下C#代码(请注意,这是一个简化示例):
public class MyClass
{
[Check]
public int MyProp { get; private set; }
}
此Check
属性应检查它所装饰的属性是否具有公共setter。由于MyProp
属性没有公共setter(它有私有setter),Check
属性应该会破坏构建。
有可能吗?
答案 0 :(得分:3)
不 - 至少,目前不是,使用标准构建工具。当“编译器即服务”项目出现时,完全可能会出现这种功能。但是C#编译器只是真正改变了它的一些众所周知的属性。
您可能需要考虑两个选项:
就我个人而言,我可能会选择后者...虽然真的,但没有太多明显的好处 - 如果你记得以声明的方式添加[Check]
属性,你是不是要记得添加公共设置器?或者换句话说:如果你忘记来加入公共制定者,你是否只是忘记包含属性?