2013-10-19 59 views
1

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

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

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

+0

AFAIK在当前.NET版本中没有这样的功能。但是,您可以相对轻松地实现运行时检查。 – Vlad

回答

2

我不明白你如何使用接口来做到这一点。 但是,您可以使用具有您想要的属性的方法的抽象类来完成此操作。这些方法将调用必须实现的摘要方法。 例如:

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

    protected abstract InnerF(); 
} 

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

ofcourse另一种选择,运行后生成工具将验证您的代码为您定义的规则。 看一看here

+0

聪明,好主意! – BartoszKP

+0

我想过,但是由于Protobuf如何与继承协同工作(如果您感兴趣,请查看“ProtoInclude”属性),这会使我的模型复杂化许多。但如果这是唯一的解决方案,我会接受。 – Max