有没有替代大混乱属性的替代品

本文关键字:替代品 属性 大混乱 有没有 | 更新日期: 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 个字符后换一行?只要有一行很长的代码,关心的人就可以滚动阅读参数。