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 回答