ho le seguenti classi/interfacce:C# Vincolo generico - Come fare riferimento al tipo di classe corrente?
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 {}
C'è un modo che io possa costringo TP su IView <> per essere una classe che eredita da AbstractBasePresenter?
Oppure è la mia unica alternativa per creare un'interfaccia IPresenter non generica e quindi aggiornare IPresenter per implementarlo e quindi utilizzare il controllo "TP: IPresenter"?
Grazie
Aggiornamento:
soluzione proposta di seguito non funziona:
public interface IView<TV, TE, TP> : IView
where TV : IViewModel
where TE : IEditModel
where TP : AbstractBasePresenter<IView<TV,TE,TP>>
{
}
Ho interfaccia dichiarata come: lamenta
public interface IInsuredDetailsView : IView<InsuredDetailsViewModel, InsuredDetailsEditModel, IInsuredDetailsPresenter>
{ }
public interface IInsuredDetailsPresenter : IPresenter<IInsuredDetailsView>
{ }
compilatore che IInsuredDetailsPresenter non è cedibile a AbstractBasePresenter>
'AbstractBasePresenter' con quale' T'? C# non ha concetto di istanze di tipi generici per i quali alcuni parametri di tipo non sono stati impostati. –
'dove TP: AbstractBasePresenter>' compila ma non sono sicuro che fornirà il risultato ciò che vuoi ... –
nemesv
Come nota, la seguente struttura è complicata ed è difficile capire cosa può essere utile per. – Andrey