如果它有自定义属性,如何定义类类型的约束?

时间:2011-05-08 09:24:33

标签: c#-4.0 custom-attributes compile-time-constant

如果它有一个特定的自定义属性,有什么方法可以强制类实现一个接口?

如果具有特定属性的类没有实现特定接口,我希望有编译时错误。

[myAttrib]
public MyClass:IMyInterface
{

}

如果myClass不是typeof(IMyInterface),我将在编译时遇到错误。

感谢,

1 个答案:

答案 0 :(得分:0)

如果是属性,您可以创建一个继承该接口的抽象类,并从该抽象类中获取最终的类驱动。

看看

public interface Test
    {
        string Name { get; set; }
    }

    public abstract class Test1 : Test
    {
        public abstract string Name { get; set; }
    }

    public class Test2 : Test1
    {

    }

对于自定义属性,您可以

public class Alias : System.Attribute
    {
    string[] _types;

    public Alias(params string[] types)
    {
        this.Types = types;
    }
    public Alias()
    {
        this.Types = null;
    }

    public string[] Types
    {
        get { return _types; }
        set { _types = value; }
    }
  }

    public interface Test
    {
        Alias Attrib{ get;}
    }

    public abstract class Test1 : Test
    {
        public abstract Alias Attrib { get; }
    }

    public class Test2 : Test1
    {

    }

希望我回答你的问题。