Ben şu sınıfları/arayüzleri:C# Jenerik Kısıtlama - Nasıl geçerli sınıf türü başvurmak için?
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 {}
Ben AbstractBasePresenter devralan bir sınıf olmaya IView <> üzerinde TP sınırlamak herhangi bir yolu var mı?
Ya kontrol dışı bir jenerik IPresenter arayüzü oluşturmak ve daha sonra IPresenter bunu uygulamaya güncellemek ve daha sonra kullanmak üzere benim tek alternatiftir "TP: IPresenter"?
public interface IInsuredDetailsView : IView<InsuredDetailsViewModel, InsuredDetailsEditModel, IInsuredDetailsPresenter>
{ }
public interface IInsuredDetailsPresenter : IPresenter<IInsuredDetailsView>
{ }
Derleyici IInsuredDetailsPresenter atanabilir olmadığını yakınır:
Teşekkür
Güncelleme:
aşağıdaÖnerilen cevap çalışmaz: olarak
public interface IView<TV, TE, TP> : IView
where TV : IViewModel
where TE : IEditModel
where TP : AbstractBasePresenter<IView<TV,TE,TP>>
{
}
Ben arayüz ilan ettiler SoyutBasePresenter>
'AbstractBasePresenter'? C# bazı türü parametreleri ayarlamak edilmemiş yapılan jenerik tiplerinin örneklerini kavramı yok. –
'nerede TP: AbstractBasePresenter>' derler ama istediğini o sonucu sağlayacaktır emin değilim ... Bir not olarak –
nemesv
aşağıdaki yapı overcomplicated olduğunu ve olabileceğini anlamak zordur için yararlı. – Andrey