如何创建具有可选泛型类型的泛型方法?这就是我现在所拥有的,它有效
public GridViewColumn<T> Column<D>(String HeaderText, D decorator) where D: IColumnDecorator, new()
{
GridViewColumn<T> column = new GridViewColumn<T>();
column.HeaderText = HeaderText;
column.Decorator = new D();
return column;
}
如您所见,我需要在 Column() 方法中实例化类型 D(实现 IColumnDecorator)。
问题是,“D”类型是可选的。如果为 Null,我想明确使用我拥有的默认 ColumnDecorator。就像是
public GridViewColumn<T> Column<D>(String HeaderText, D decorator) where D: IColumnDecorator, new()
{
GridViewColumn<T> column = new GridViewColumn<T>();
column.HeaderText = HeaderText;
if(decorator ==null)
{
column.Decorator = new DefaultColumnDecorator();
}
else{
column.Decorator = new D();
}
return column;
}
请帮忙。谢谢!
[编辑]。
如果我有一个自定义的 IColumnDecorator 实现,这就是我想在 razor MVC 中使用它的方式
@Model.[IEnumerable].Grid(grid=>{
..
...
grid.columns(
grid.Column<MyOwnColumnDecorator>("FirstColumn")
)
});
如果我没有任何并想使用默认值,那么我希望能够做类似的事情
@Model.[IEnumerable].Grid(grid=>{
..
...
grid.columns(
grid.Column("FirstColumn",null) or simply grid.Column("FirstColumn");
)
});