属性的不雅/不当使用?

时间:2010-11-23 13:20:22

标签: c# attributes

我有一个类,我用它作为对象的描述符。在该描述符中,对于要针对涉及该对象的不同操作实例化的类,有几个Type引用。我正在考虑将这些引用拉出来并用描述符类中的属性替换它们。

由此:

class MyDescriptor : BaseDescriptor {
    public Type Op1Type { get; }
    public Type Op2Type { get; }
}

对此:

[Op1(typeof(foo))]
[Op2(typeof(bar))]
class MyDescriptor : BaseDescriptor {
}

我很少使用属性。这会被认为是对他们的不好用吗?

5 个答案:

答案 0 :(得分:0)

我个人会使用依赖注入,而不是在编译时将依赖项烘焙到Type本身。

在构造函数或初始化中通过类实例化依赖项,我无法看到任何好处。

依赖注入允许您在运行时更改此类行为,并且可以使用虚拟存根/模拟替换它们。

答案 1 :(得分:0)

我没有看到您使用属性的方式有任何问题,但我也看不到您获得的任何好处。也许如果您分享更多信息,那么提出解决方案会更容易。

答案 2 :(得分:0)

我认为这是一个很好的属性使用,特别是如果你想在实例化它们装饰的类之前能够通过反射来实例化装饰类。使用属性有很多好处,这只是一个。

无论您的意图如何,我都没有看到实施方面的问题。

答案 3 :(得分:0)

当我想指定使用什么类型的哈希算法提供程序时,我会使用这种方式。

子类具有将由父类读取的属性,它将创建该类型的实例。

答案 4 :(得分:0)

属性是在源代码中表达这一点的一种相当优雅的方式,但是运行时性能很差。

您可能希望在运行时构建缓存以快速查找,可能使用Dictionary<Type, Type>