Genericパラメータを取るメソッドがあります。タイプを2つに制限しました。メソッド内で、私は2つのコンストラクタのうちの1つを呼び出すように設定したい。C#の新しいインスタンスに汎用を設定する
コード:
internal static void CreateAddress<T>(out T address, bool isSave, int? cID) where T: Address_Accessor, Address
{
DateTime dt= DateTime.Now;
int? eID = 1;
int? sID = 50;
if (typeof(T) == typeof(Address_Accessor))
address = new Address_Accessor(dt, eID , sID);
else
address = new Address(dt, eID, sID);
}
コンパイルの失敗は言う:
が暗黙的に 'T' を型 'Address_Accessor' を変換できません。明示的な変換が存在する(あなたはキャストが欠けている?)アドレスとAddress_Accessorの両方がいくつかの一般的なエンティティ表す場合、簡単な解決策(持っていない任意の詳細は、メソッドの使用例をregardign)として
ジェネリック医薬品は、ここではかなりひどいフィットのように見えます。オーバーロードされたメソッドがうまくいくようです。 –
Address_AccessorとAddressの関係は? –
これは適切ではありませんが、ジェネリックスを使用すると、タイプを動的に混合およびマッチングするだけでなく、特定のタイプを扱うことができます。 –