Merci d'avance. Voici mon code:Covariance Contravariance Generics Interfaces - pourquoi cela ne fonctionne-t-il pas?
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
{
}
}
public class AppUserManager : UserManager<ApplicationUser>
{
...
}
public interface IOwinManager
{
UserManager<IdentityUser> UserManager { get; }
}
Pourquoi cela ne fonctionne-t-il pas?
public class OwinManager : IOwinManager
{
public UserManager<IdentityUser> UserManager
{
get { return new AppUserManager(); }
}
}
Depuis ApplicationUser hérite de IdentityUser et AppUserManager de UserManager, pourquoi le non générique combinée acceptée? Merci!
Est-ce que 'UserManager <>' 'est une classe, pas une interface?Tout simplement parce que "un' ApplicationUser' *** est un *** 'IdentityUser'" n'implique pas que "un' UserManager '*** est un ***' UserManager '". Sauf si le type 'UserManager <>' a été déclaré _covariant_ dans son argument de type. En C# dans sa version actuelle, seuls les types 'interface' et' delegate' peuvent être déclarés covariants (modificateur 'out' sur le paramètre type). Les types 'class' et' struct' ne le peuvent pas. –