I持って、次のクラス/インタフェース:C#Generic Constraint - 現在のクラスの型を参照する方法?
public abstract class AbstractBasePresenter<T> : IPresenter<T>
where T : class, IView
{
}
public interface IPresenter<T>
{
}
public interface IView<TV, TE, TP> : IView
where TV : IViewModel
where TE : IEditModel
//where TP : AbstractBasePresenter<???>
{
}
public interface IView {}
私はAbstractBasePresenterから継承したクラスであることをIViewの<>にTPを制約することができます任意の方法はありますか?
非汎用のIPresenterインターフェイスを作成し、それを実装するためにIPresenterを更新し、 "TP:IPresenter"チェックを使用する唯一の方法は何ですか?
おかげで
アップデート:以下
提案答えは動作しません:
public interface IView<TV, TE, TP> : IView
where TV : IViewModel
where TE : IEditModel
where TP : AbstractBasePresenter<IView<TV,TE,TP>>
{
}
として、私はインターフェイス宣言を持っている:コンパイラはIInsuredDetailsPresenterがへ割り当てられないと文句を言い
public interface IInsuredDetailsView : IView<InsuredDetailsViewModel, InsuredDetailsEditModel, IInsuredDetailsPresenter>
{ }
public interface IInsuredDetailsPresenter : IPresenter<IInsuredDetailsView>
{ }
AbstractBasePresenter>
'AbstractBasePresenter'には' T'がありますか? C#には、いくつかの型パラメータが設定されていないジェネリック型のインスタンスの概念はありません。 –
'ここでTP:AbstractBasePresenter>'がコンパイルされますが、あなたが望む結果が得られるかどうかは分かりません... –
nemesv
以下の構造は複雑すぎて、できることを理解するのは難しい〜のために役立つ。 – Andrey