sab*_*ber 6 .net c# generics dynamic
请考虑以下代码:
public dynamic DataGrid { get; private set; }
public DataGridForm<TData, TGrid> GridConfig<TData, TGrid>() where TData : class
{
return DataGrid = new DataGridForm<TData, TGrid>();
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将一个泛型类的实例保留在propertyfor 以供以后使用,但如您所知:
属性,事件,构造函数等不能是通用的 - 只有方法和类型可以是通用的.大部分时间都不是问题,但我同意有时这很痛苦(Jon Skeet)
我想知道这是解决这种情况的好方法吗?
正如评论中的答案所示,您可以使用基类或接口来执行此操作:
class DataGridForm {}
class DataGridForm<TData, TGrid> : DataGridForm {}
class GridConfigurator
{
public DataGridForm DataGrid { get; private set; }
public DataGridForm<TData, TGrid> GridConfig<TData, TGrid>() where TData : class
{
return DataGrid = new DataGridForm<TData, TGrid>();
}
}
Run Code Online (Sandbox Code Playgroud)
当添加泛型时,C# 中的大量类型和接口都以这种方式进行了扩展。但是,我可能会重新评估您的设计,以便可能称为 GridConfig() 的任何内容都在缓存 DataGridForm,因为它知道类型。例如,我在代码中做了非常类似的事情:
class Vector<T> { ... }
static class Vector
{
public static Vector<T> Create<T>(T value)
{
return new Vector<T>(value);
}
}
class OtherClass
{
public static Vector<int> MyVector = Vector.Create(1);
}
Run Code Online (Sandbox Code Playgroud)
不过,您的具体用例可能不支持这种风格。
| 归档时间: |
|
| 查看次数: |
352 次 |
| 最近记录: |