1

特定のカスタム属性がある場合、クラスにインターフェイスを強制的に実装する方法はありますか?

特定の属性を持つクラスが特定のインターフェイスを実装していない場合、コンパイル時エラーが発生するようにします。

[myAttrib]
public MyClass:IMyInterface
{

}

myClass が typeof(IMyInterface) でない場合、コンパイル時にエラーが発生します。

ありがとう、

4

1 に答える 1

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
    {

    }

ご質問にお答えします。

于 2011-05-08T09:39:59.233 に答える