首页 / 知识
关于.net:创建属性以破坏构建
2023-04-13 05:50:00

Create an Attribute to Break the Build好的,从我之前的问题开始进行此类。 我真正想做的是创建某种属性,该属性使我可以装饰将破坏构建的方法。 与Obsolete(" reason",true)属性非常相似,但是没有错误地标识过时的代码。 需要说明的是:我不希望它在任何F6(构建)印刷机上中断构建,仅在代码中其他位置调用了用属性装饰的方法时才希望中断构建。 就像我说的那样,过时了,但是不一样。 我知道我并不孤单,因为其他用户出于其他原因希望使用它。 我以前从未创建过自定义属性,所以这对我来说是全新的!
我认为这对Microsoft来说是一个很好的功能要求:创建一个抽象基类属性 如果这是针对XML序列化和NHibernate的,那么您希望在其中访问无参构造函数(如您所引用的示例中的情况),则对序列化使用私有或受保护的无参构造函数,对于NHibernate使用受保护的构造函数。使用受保护的版本,您将可以使用继承的类来调用该代码。 如果您不希望代码调用方法,请不要使其可访问。 编辑:也许可以回答更深层次的问题,AFAIK编译器只知道三个属性:过时,条件和AttributeUsage。要为其他属性添加特殊处理,将需要修改编译器。 如果您考虑警告(这是[已过时]引发的)构建中断,则只需使用#warning编译器指令。 编辑:我从来没有使用过,但#error也可用。 我认为唯一可靠的方法是扩展Visual Studio(通过VSIP)并订阅正确的事件(可能在EnvDTE.BuildEvents中),并检查代码是否使用了构造函数,如果需要,则取消构建发现它。 回应4年后:) 我是否有过时的替代品也有同样的问题。 不久前,我回忆起(第9频道的视频)微软表示,它正在努力使开发人员在某个时候可以访问诸如编译器api之类的东西,因此将来可以设想编写一个编译器"插件"以允许用自己的自定义属性修饰方法,并告诉编译器取消修饰的代码是否可以在代码中的其他位置调用等。 考虑一下,这实际上会很酷。这也提醒我,我也应该尝试阅读MS正在处理的编译器api的进度。 在构建后步骤中抛出自定义异常并对其进行单元测试 创建一个FxCop规则,并将FxCop添加到您的集成版本中以进行检查。 您会得到警告,而不是失败的构建。属性在反射时间而不是构建时间"运行"。 另外(这很讨厌)将编译器指令放在您不想被调用的方法周围。然后,如果您调用它,则代码将中断,但是您可以设置一个通过正确的编译器指令而不会通过的编译。 我建议您使用#error指令。 另一个可能起作用的未知属性是条件属性(取决于您要努力实现的目标)
如果定义了" MY_CONDITION",它将从IL代码本身中删除方法调用。 我将不得不同意Greg:为其补充一个属性。 如果您真的很认真,也许可以找到一种方法来弄清楚是否正在使用XMLSerializer以外的任何方法访问构造函数,如果抛出异常,则抛出异常。 听起来有点像昨天的TDWTF。 :-) 为什么不只是化妆呢?未知属性肯定会破坏构建。
|
最新内容
相关内容
python3标识符是什么?
python3标识符是什么?,数字,培训,名字,标识符,开头,代表,函数,大小写,变量,结尾,python中的标识符是用于识别变量、函数、类、模块以及其他对python中获取路径的三种方法
python中获取路径的三种方法,工作,代码,情况,培训,下来,路径,文件,也就是,桌面,目录,python中获取路径总结下来分为三种情况:1、获取工作目录python如何调用另一个文件夹中的内
python如何调用另一个文件夹中的内容?,系统,培训,文件,模块,内容,路径,函数,所在,前缀,语句,python中调用另外一个文件夹中的内容:1、同一文件python如何看变量属性
python如何看变量属性,培训,属性,函数,变量,参数,对象,方法,列表,范围内,字典,1、使用dir()函数查看dir()函数不带参数时,返回当前范围内的变python列表有哪些常用方法?
python列表有哪些常用方法?,位置,方法,培训,列表,语法,元素,示例,对象,以上,参数,列表是最常用的Python数据类型,它可以作为一个方括号内的逗python报302错误怎么办?
python报302错误怎么办?,网址,情况,状态,代码,培训,错误,对象,页面,报文,暂时性,python报302错误解决方法302错误:redirect,代表暂时性转移;意Python如何创建对象,有哪些方法
Python如何创建对象,有哪些方法,培训,对象,方法,内容,函数,属性,所在,以上,以下,功能,以下介绍Python创建对象的9种方法。classPoint:def__iniPython静态函数和普通方法的区别
Python静态函数和普通方法的区别,培训,方法,静态,区别,实例,函数,属性,结果,例子,下面,下面通过一个例子,讲解Python静态函数、普通方法、类方python中什么是类方法
python中什么是类方法,培训,方法,实例,静态,定义,参数,函数,内部,变量,属性,python中的类方法,指的是在类中定义的函数,函数在类的内部称为方法python无法调用cv2怎么解决
python无法调用cv2怎么解决,时报,培训,参数,终端,新版,以上,两个,更多,内容,python调用cv2.findContours时报错:ValueError:notenoughvaluestpython看类里有哪些方法
python看类里有哪些方法,信息,员工,培训,名称,方法,函数,冒号,字符串,语句,结尾,python使用class语句来创建一个新类,class之后为类的名称并以python怎么调用方法
python怎么调用方法,系统,培训,方法,参数,法名,定义,列表,实例,以上,函数,python调用的方法类的方法的定义1、定义一个类deffun_name(self,..