我想創建一個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 <對象>'。一個 顯式轉換存在(是否 缺少強制轉換?)
無法隱式轉換類型 DataTableColumn < System.DateTime的? >'至 'IDataTableColumn < object>'。一個 顯式轉換存在(是否 缺少強制轉換?)
你得到什麼錯誤? – 2011-06-10 18:06:03