属性接口

时间:2013-10-19 12:28:32

标签: c# reflection attributes aop

接口有点像合约,当它在一个类中实现时,你可以保证这个类有一组你可以调用的特定公共方法。

我想知道如何将这个原则用于属性;即具有一个接口,当一个类实现它时,我保证这个类有一组特定的属性。

我正在寻找此功能,因为我正在使用Protobuf,并且此库要求您要序列化的类具有特定属性(例如XmlType,但其他类似属性也有效)。我想操纵一组对象,无论它们是什么类型,只要它们具有这个特定的属性。

1 个答案:

答案 0 :(得分:2)

我不知道你怎么能用接口做到这一点。 但是,您可以使用具有所需属性的方法的抽象类来完成此操作。 这些方法将调用摘要方法,然后必须实现这些方法。 例如:

public abstract class A
{
     [XmlType]
     public void F()
     {
          InnerF();
     }

     protected abstract InnerF();
}

public class B extends A
{
     protected void InnerF()
     {
     }
}

另一个选项是运行一个后期构建工具,它将验证您定义的规则的代码。 看看here