我有这个界面
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属性?
答案 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#中不存在。