2010-07-09 5 views
0

J'ai une interface comme suit:appel de méthode générique ne peut pas convertir le nom de la classe pour le nom complet de la classe

public interface ISelectEntity 
{ 
    List<T> GetFromDB<T, O>(O data); 
} 

Je la mise en œuvre comme suit dans une classe StatusCodes

List<StatusCodes> ISelectEntity.GetFromDB<StatusCodes, StatusCodesInputParameters>(StatusCodesInputParameters data) 
    { 
     return EntitiesClass.PopulateStatusCodes(EntitiesDAL.GetStatusCodes(data)); 
    } 

Je suis en recevant l'erreur suivante, toutefois:

Erreur 2 Argument '1': impossible de convertir 'StatusCodesInputParameters' en 'Namespace.StatusCodesInputParamete

En supposant que mon espace de noms s'appelle Namespace, c'est l'erreur que je reçois. Tout cela est dans cet espace de noms. Qu'est-ce que je fais mal?

Répondre

1

Vous ne pouvez pas modifier les signatures de méthode dans les classes dérivées. Vous pouvez définir l'argument générique sur l'interface mais au lieu de le faire sur la méthode:

public interface ISelectEntity<T, O> 
{ 
    List<T> GetFromDB(O data); 
} 

et un échantillon mise en œuvre explicite pourrait ressembler à ceci:

public class Foo : ISelectEntity<StatusCodes, StatusCodesInputParameters> 
{ 
    List<StatusCodes> ISelectEntity<StatusCodes, StatusCodesInputParameters>.GetFromDB(StatusCodesInputParameters data) 
    { 
     return EntitiesClass.PopulateStatusCodes(EntitiesDAL.GetStatusCodes(data)); 
    } 
} 

et un échantillon mise en œuvre implicite:

public class Foo : ISelectEntity<StatusCodes, StatusCodesInputParameters> 
{ 
    public List<StatusCodes> GetFromDB(StatusCodesInputParameters data) 
    { 
     return EntitiesClass.PopulateStatusCodes(EntitiesDAL.GetStatusCodes(data)); 
    } 
} 
+0

Merci beaucoup! Je n'ai pas réalisé. – DougJones

Questions connexes