私はこの一般的な方法を単純化するために作成しようとしていますが、私はそれを台無しにしたと思います!私の問題を助けてくれますか?複数のクラスを持つ汎用
これはコンパイル:
private string ConcatenateText<T1, T2>(MyEntity myEntity)
where T1 : Supplier, new()
where T1 : Employee, new()
where T2 : SupplierDepartment, new()
where T2 : EmployeeDepartment, new()
{
T1 p = new T1();
T2 r = new T2();
//Code here for myEntity treatment
return mystring;
}
をこれがコンパイルされていませんが:
protected void mybutton1_Click(object sender, EventArgs e)
{
string mystring = ConcatenaText<Supplier, SupplierDepartment>(myEntity);
}
//This does not compile
protected void mybutton2_Click(object sender, EventArgs e)
{
string mystring = ConcatenaText<Employee, EmployeeDepartment>(myEntity);
}
メッセージ:タイプサプライヤーがジェネリック型またはメソッドConcatenateTextタイプパラメータT1として使用することができない(MyEntity myEntity )。サプライヤから従業員への暗黙的な参照変換はありません
これを行うことはできますか?私は間違って何をしていますか?それは改善することができますか?
EDIT:
そしてMyEntityこのジェネリックメソッドの内部でそれを処理するために、ちょうど別のクラスです!これはT型には関係しません。単なる引数です。しかし、私はそれを行うことができないことは明らかです。そのような2つのタイプを使用します。私は私が1つまたは別のものを割り当てることができると思っていました。私の初期設定から独立したCLRは、私が望むように反応しました。私はそれについてもう少し情報を共有する答えを受け入れるつもりです。
おっとは、他の二人は登場し、ほぼ同じ –
偉大な答えを言ったが、私は正確に覚えていた場合、あなたは1クラス上の複数のクラスをオーバーロードすることはできません。インターフェイスとジェネリックはこの例では良い選択です。 –
@TarıközgünGünerオーバーロードとオーバーライドを混同しないでください。 –