首页 / 知识
关于c#:强制类/方法的属性修饰
2023-04-12 17:15:00

Enforce Attribute Decoration of Classes/Methods接下来是我最近关于大型复杂对象作为Web服务结果的问题。我一直在思考如何确保将来的所有子类都可序列化为XML。 现在,很明显,我可以实现IXmlSerializable接口,然后向其添加读取器/写入器,但是我想避免这种情况,因为那样就意味着我需要在每次需要时实例化读取器/写入器,并且99.99%的时间我将使用一个字符串,所以我可以自己写一个。 但是,要序列化为XML,我只是用Xml装饰类及其成员???属性(XmlRoot,XmlElement等),然后将其传递给XmlSerializer和StringWriter以获取字符串。一切都很好。我打算将方法用于将字符串返回到通用实用程序方法中,所以我不必担心类型等。 我所关心的是:如果我不使用必需的属性来装饰类,那么直到运行时才会引发错误。 有什么方法可以强制属性修饰?可以用FxCop完成吗? (我还没有使用过FxCop) 更新: 很抱歉延迟与其他人的联系,还有很多事情要做! 绝对像在测试用例中使用反射而不是求助于FxCop的想法(喜欢将所有内容放在一起)。Fredrik Kalseth的回答非常棒,感谢您提供了代码,因为这可能会使我费劲自己弄清楚怎么做! +1其他人类似的建议:) 我将编写一个单元/集成测试,以验证与某些给定条件匹配的任何类(即X的子类)是否得到适当的装饰。如果将构建设置为与测试一起运行,则当此测试失败时,可能会使构建失败。 更新:您说,"看起来我只需要袖手旁观,并确保单元测试得到统一维护" –您不必这样做。只需编写一个使用反射来查找需要断言的所有类的常规测试类。像这样:
您可以编写FxCop规则,甚至可以通过在基类的构造函数中调用GetType()并检查返回的类型来检查属性。 您可以编写单元测试来检查这种情况-它基本上使用反射。 鉴于事实是可能的,我想也可以编写FxCop规则,但是我从未做过这样的事情。 您还可以使用此概念/后处理器来加强属性之间的关系,并在编译时使用类似的登录名来加强类和属性之间的关系: http://www.st.informatik.tu-darmstadt.de/database/publications/data/cepa-mezini-gpce04.pdf?id=92 一个好的FXCop规则(以及我现在发现我需要的一个规则)将是检查要添加到ASP.NET会话中的所有对象是否都具有Seri??alizable属性。我正在尝试从InProc会话状态转移到SQL Server。第一次请求页面时,我的网站在我眼前一亮,因为无法序列化的对象存储在Session中。然后是搜寻所有源代码以寻找在Session中设置对象的每个实例的任务。FXCop将是一个不错的解决方案。要做的事情... |
最新内容
相关内容
python有map方法吗
python有map方法吗,培训,位置,数据,函数,列表,序列,参数,元素,方法,使用方法,python中的map:map()会根据提供的函数对指定序列做映射。第一个python有哪些方法可以解压文件?
python有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大。python函数与方法的区别是什么
python函数与方法的区别是什么,培训,函数,方法,区别,对象,以上,方式,更多,内容,python中函数和方法的区别1、函数要手动传self,方法不用传selpython类自带方法吗
python类自带方法吗,培训,方法,里面,实例,也就是说,下面,对象,以上,之后,参数,python中的类,创建好之后,里面是没有方法的,也就是说,类并没有自带python子类可以调用父类方法吗
python子类可以调用父类方法吗,培训,名称,资料,情况,地方,函数,参数,方法,表示,语句,python中的子类中的__init__()函数会覆盖父类的函数,一些python静态方法怎么使用self
python静态方法怎么使用self,培训,管理,不了,方法,静态,属性,实例,变量,对象,参数,python-静态方法,类方法,属性方法静态方法实际上与类(或者实python魔术方法是什么
python魔术方法是什么,培训,通信,设计,第一,第三,数据,方法,实例,对象,参数,1、什么是魔术方法魔法方法就是可以给你的类增加魔力的特殊方法,python怎么理解Python的构造方法
python怎么理解Python的构造方法,代码,名字,培训,方法,参数,对象,以上,结尾,函数,开头,在创建类时,我们可以手动添加一个__init__()方法,该方法python不支持next方法吗
python不支持next方法吗,异常,培训,项目,方法,对象,元素,参数,函数,语法,文件,Python3中的File对象不支持next()方法。Python3有一个内置函数python列表操作的函数和方法
python列表操作的函数和方法,培训,位置,列表,元素,操作,函数,末尾,方法,对象,以下,1列表操作包含以下函数:21、cmp(list1,list2):比较两个列表python如何实例化对象
python如何实例化对象,培训,名称,实例,括号,关键字,对象,函数,字母,方式,以上,python中同样使用关键字class创建一个类,类名称第一个字母大写,python判断对象是否有某个属性
python判断对象是否有某个属性,培训,名称,异常,属性,对象,方法,参数,定义,以上,更多,python判断对象是否有某个属性的方法:hasattr(object,nam