获取泛型类中的接口属性值
本文关键字:属性 接口 泛型类 获取 | 更新日期: 2023-09-27 18:18:35
我有这个接口
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")};
}
}
}
和this Form
public partial class MyForm<T> : Form where T:Class,IMyInterface
{
...
}
的代码
MyForm<MyClass> frm = new MyForm<MyClass>();
我怎么能访问Params属性的MyClass从对象?
如果您还要求MyForm
的T
类型参数具有无参数构造函数,您可以实例化T
的实例,然后随意使用interface属性。
在MyForm
的定义上,添加new()
泛型约束
public partial class MyForm<T> : Form where T : Class, IMyInterface, new()
然后在MyForm<T>
的某些方法中,您可以使用:
(new T()).Params;
你可以在这里阅读关于c#类型参数的所有约束。
看起来你真正需要的是能够指定静态方法的接口(所谓的静态接口)。c#中不存在这样的结构。