获取泛型类中的接口属性值

时间:2013-06-17 03:15:08

标签: c# generics

我有这个界面

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属性?

1 个答案:

答案 0 :(得分:2)

如果还要求T的{​​{1}}类型参数具有无参数构造函数,则可以实例化MyForm的实例,然后随意使用interface属性。

T的定义中,添加MyForm通用约束

new()

然后在public partial class MyForm<T> : Form where T : Class, IMyInterface, new() 的某种方法中,您可以使用:

MyForm<T>

您可以在C#here中阅读有关类型参数的所有约束。

看起来你真正想要的是可以指定静态方法的接口(所谓的静态接口)。这种结构在C#中不存在。