使用界面强制自定义属性

时间:2016-09-01 04:46:48

标签: c#

我有一个名为IEntity的界面。

我希望实现此接口的所有类都具有类级属性。

我的支持是:

[System.AttributeUsage(System.AttributeTargets.Class)]
   public class DbSchemaElementAttribute : System.Attribute
   {
      public string Name { get; set; }
   }

如何确保类是否正在实现IEntity,它也必须具有此属性。

这甚至可能吗?接口是合同,所以它似乎是一个合理的地方来强制执行。

1 个答案:

答案 0 :(得分:1)

.NET不包含强制派生类通过检查编译时实现必需属性的方法,包括抽象类和接口。

如果您需要使用属性,那么可能的解决方案之一是为此检查实施单元测试,或者对应用程序启动进行简单检查。

但我建议您使用属性或方法而不是属性。因此,它的实现很容易在编译时检查。