クラス 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< オブジェクト >' に変更します。明示的な変換が存在します (キャストがありませんか?)