我正在尝试创建一个 DataTableColumn 类的数组,但不幸的是我为此发疯了。到目前为止,这就是我试图做的但没有成功
public interface IDataTableColumn<out TValue> {
string Expression { get; }
DataTableFilterType FilterType { get; }
TValue Cast(string value);
}
public class DataTableColumn<TValue> : IDataTableColumn<TValue> {
public DataTableColumn(string expression, DataTableFilterType filterType = DataTableFilterType.Equal) {
Expression = expression;
FilterType = filterType;
}
public string Expression { get; private set; }
public DataTableFilterType FilterType { get; private set; }
public TValue Cast(string value) {
return value.As<TValue>();
}
}
我的数组应该像
private readonly IDataTableColumn<object>[] _columns = {
new DataTableColumn<int>("Id"), // ERROR
new DataTableColumn<string>("Description", DataTableFilterType.StartsWith), // SUCCESS
new DataTableColumn<DateTime?>("Date"), // ERROR
};
实际上是这样工作的
private readonly dynamic[] _columns = {
new DataTableColumn<int>("Id"),
new DataTableColumn<string>("Description", DataTableFilterType.StartsWith),
new DataTableColumn<DateTime?>("Date"),
};
我认为使用动态并不是最好的方法......请有人阐明!
编辑
该死的我忘记了错误
无法将类型 DataTableColumn< int >' 隐式转换为 'IDataTableColumn< object >'。存在显式转换(您是否缺少演员表?)
无法隐式转换类型 DataTableColumn< System.DateTime?>' 到 'IDataTableColumn< 对象 >'。存在显式转换(您是否缺少演员表?)