少し恥ずかしい質問のタイトルで申し訳ありませんが、状況をより明確に説明する方法がわかりませんでした。
たとえば、次の 4 つのクラスがあるとします。
public class CustomModel
{
public string Value1 { get; set; }
}
public class CustomModel2 : CustomModel
{
}
public class CustomViewModel<T> where T : CustomModel
{
}
public class PageOfType<T, TT> where T : CustomViewModel<TT> where TT : CustomModel
{
public TT Model { get; set; }
public T ViewModel { get; set; }
}
したがって、アイデアは非常に単純です。PageOfType
タイプのプロパティが必要is an argument of type
ですis an argument for itself
。
したがって、インスタンス化は次のようになります (これは少し複雑で、開発プロセスではあまりうまく使用されません)。
var p0 = new PageOfType<CustomViewModel<CustomModel>, CustomModel>();
var p1 = new PageOfType<CustomViewModel<CustomModel>, CustomModel2>();
// ^^ this line gives an error as, obviously, CustomViewModel<CustomModel> and CustomViewModel<CustomModel2> are not convertable
p0.Model.Value1 = "some string"; // <- this line is perfectly what I need (it works)
それで、あなたは私に何か手がかりを与えることができますか:
代わりに、単にこのようなものを用意するために、そのすべての「キッチン」をどのように配置する必要がありますか(つまり、初期化で2 回は言うまでもありません
CustomModel
)。var p0 = new PageOfType<CustomViewModel<CustomModel>>(); // or even having new PageOfType<CustomViewModel2>(); // (if CustomViewModel2 is just as: // public class CustomViewModel2 : CustomViewModel<CustomModel> // for instance)
これで変換可能なエラーを処理するにはどうすればよいですか (別の選択肢がない限り、この状況でインターフェイスを簡単に使用できるかどうかわからないため):
var p1 = new PageOfType<CustomViewModel<CustomModel>, CustomModel2>(); // ^^ this line gives an error as...