Laissez-moi commencer par dire que je suis assez nouveau à l'utilisation des interfaces.Comment puis-je retourner Liste <MyInterface> dans ce scénario
J'écris une méthode (GetClaimDetails) qui renverra des informations sur une réclamation d'assurance médicale. S'il s'agit du type de revendication A, il renvoie une liste de la classe ClaimDetailA. Si le type de réclamation B, renvoie la liste de la classe ClaimDetailB. Ces deux classes partagent des propriétés communes, mais chacune possède des propriétés uniques. Les propriétés communes sont implémentées dans une interface.
J'ai extrait une interface nommée IClaimDetail et défini les deux pour l'implémenter. Lorsque je mets la méthode pour retourner IClaimDetail et qu'elle renvoie une instance d'un objet qui implémente IClaimsDetail, j'obtiens le message du compilateur
'Impossible de convertir implicitement' System.Collections.Generic.List DentalClaimDetail 'en' System.Collections .Generic.List IClaimDetail »
private static List<IClaimDetail> GetClaimDetailsB(string claimNumber, string connectionStringName)
{
var claimReportRows = new List<DentalClaimDetail>();
..removed for brevity
return claimReportRows;
}
public class DentalClaimDetail : IClaimDetail
{
...
}
Lorsqu'une méthode retourne une interface, vous revenez juste un objet, les outils de l'interface. Correct? Qu'est-ce que je fais mal?
Voir la réponse de Daniel White. En .NET 4 ceci devrait être supporté (type covariance) – Jimmy