【发布时间】:2013-07-24 00:16:54
【问题描述】:
考虑以下代码:
public dynamic DataGrid { get; private set; }
public DataGridForm<TData, TGrid> GridConfig<TData, TGrid>() where TData : class
{
return DataGrid = new DataGridForm<TData, TGrid>();
}
我正在尝试将泛型类的实例保存在 property 中以供以后使用,但如您所知:
属性、事件、构造函数等不能是通用的——只有方法 并且类型可以是通用的。大多数时候这不是问题,但我 同意有时这很痛苦 (Jon Skeet)
我想知道这是解决这种情况的好方法吗?
【问题讨论】:
-
你不能把通用功能放在一个接口
IDataGridForm中,然后让属性属于那种类型吗? -
我听不懂,你能详细解释一下吗?
-
好吧,你想如何使用
DataGridForm?例如,我想你想display一个表格。因此,使用方法Display()创建一个接口IDataGridForm。现在让您的班级DataGridForm<TData, TGrid>实现该接口。它需要有Display()方法来做到这一点。现在有一个属性public IDataGridForm DataGrid { get; private set; }。这个属性现在可以包含一个DataGridForm<TData, TGrid>,你可以在任何你想要的地方使用Display()。 -
感谢您的回复,看来这种方式比使用动态属性更好。
-
有关接口的更多信息(如果需要)请参阅:MSDN