2

私はこのインターフェースを持っています

public interface IMyInterface
{
    IEnumerable<MyParamInfo> Params { get; }
}  

MyParamInfo の場所

public class MyParamInfo 
    {
        public MyParamInfo (string name)
        {
            Name= name;
        }
        public string Name { get; private set; }
}

このクラスも

public class MyClass:IMyInterface
{  
   //properties
   ....  
   public IEnumerable<MyParamInfo> Params
   {
      get
        {
         return new List<MyParamInfo> { new MyParamInfo("Param1")};
        }
   }
}

そしてこのフォーム

public partial class MyForm<T> : Form where T:Class,IMyInterface
{
  ...
} 

このコードで

MyForm<MyClass> frm = new MyForm<MyClass>();

frm オブジェクトで MyClass の Params プロパティにアクセスするにはどうすればよいですか?

4

1 に答える 1

3

Tの型パラメーターにパラメーターなしのコンストラクターも必要な場合はMyForm、 のインスタンスをインスタンス化してから、必要に応じTてインターフェイス プロパティを使用できます。

の定義で、一般的な制約MyFormを追加しますnew()

public partial class MyForm<T> : Form where T : Class, IMyInterface, new()

次に、のいくつかの方法でMyForm<T>、次を使用できます。

(new T()).Params;

C# の型パラメーターに関するすべての制約については、こちらを参照してください。

本当に必要なのは、静的メソッドを指定できるインターフェース (いわゆる静的インターフェース) のようです。このような構造は C# には存在しません。

于 2013-06-17T03:18:35.347 に答える