有没有替代大混乱属性的替代品
本文关键字:替代品 属性 大混乱 有没有 | 更新日期: 2023-09-27 17:57:02
我经常发现属性可能太大。有时感觉属性比代码占用更多的屏幕。它可能会使方法名称变得困难。
此外,它们不可重用,因此您最终可能会重复大量值。
为了解决这个问题,我考虑创建我自己的属性类,它继承自所需的属性,并且只是将所有属性设置为我需要的默认值。
但是,在大多数情况下,属性是密封的,从而阻止了我的计划。
除了大属性之外,还有其他选择吗?
作为我所说的一个随机示例:
[SoapDocumentMethod(
"http://services.acme.co.uk/account/Web/GetCustomerDetails/GetCustomerDetails",
RequestNamespace = "http://services.acme.co.uk/account/Web",
ResponseNamespace = "http://services.acme.co.uk/account/Web",
Use = SoapBindingUse.Literal,
ParameterStyle = SoapParameterStyle.Wrapped)]
public Response GetCustomerDetails(Request request)
{
//...
}
虽然它不能解决所有问题,但您应该对重复值使用常量,尤其是字符串。
[SoapDocumentMethod(
URL, RequestNamespace = NAMESPACE, ResponseNamespace = NAMESPACE,
Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public Response GetCustomerDetails(Request request)
{
//...
}
从我的角度来看,有很多选择。
一种是代码生成。您可以使用 T4 引擎来读取某些配置文件并将某些属性应用于任意成员。
了解有关 T4 on http://msdn.microsoft.com/en-us/library/ff697195.aspx 的更多信息
有时,某些类是某个层次结构的一部分,您可以在抽象或虚拟成员中使用某些属性,因此重写这些属性的派生类不需要该属性,因为它已在基成员中声明。
关于可读性,您可以使用区域来隐藏成员的属性。
无论如何,我建议您使用代码生成方法,因为它是最干净,最简单的解决方案。是的,这不是替代方案,因为您将拥有确切的代码,但您将避免手动操作。
最后,大多数 .NET API 和第三方 API 都允许您使用属性或某些对象模型配置内容,因此,当您发现代码中充满了属性时,可以通过创建自己的配置架构并使用库的对象模型来配置您的环境。
编辑
我想补充一点,如果您喜欢代码生成方法,您可以使用自定义属性,当对某个文件执行某些代码模板时,这些属性将被正确的属性替换。
其中的示例可能是:
[SomeFake]
public void A() {}
... and after code generation
[SomeActual(Allow = true, Loggable = true)]
public void A() {}
URL 声明为其他地方定义的常量字符串可能是一个开始
另外,谁说你需要在 X 个字符后换一行?只要有一行很长的代码,关心的人就可以滚动阅读参数。