2015-11-16 1 views
1

Je voudrais savoir s'il existe un moyen de créer une sorte de fonction de répartition à l'aide d'interfaces héritées. Laissez-moi vous expliquer: Disons que nous avons une classe qui travaille et attend un paramètre typé comme interface de base (disons IBaseInterface). Dans cette classe, nous devons séparer le travail par le type de l'interface. Je l'ai fait de cette façon:Fonction de répartition VB.Net avec interfaces héritées

Public Function DoWork(argument As IBaseInterface) As String 
    Return Consume(argument) 
End Function 

Private Function Consume(int As IBaseInterface) As String 
    Return "work for Base Interface Object" 
End Function 

Private Function Consume(int As IInheritedInterface) As String 
    Return "work for inherited Interface Object" 
End Function 

Quand j'appelle DoWork avec un objet qui implémente IBaseInterface, il devrait aller à la consommer avec le paramètre IBaseInterface (ça marche comme ça à ce moment) Quand j'appelle dowork avec un objet qui implémente IInheritedInterface, il doit appeler la fonction Consume avec l'IInheritedInterface (qui ne fonctionne pas, il appelle toujours la fonction avec l'argument IBaseInterface)

Existe-t-il un moyen de faire ce genre de choses sans test si type d'objet est IBaseInterface ou IInheritedInterface (parce que je pourrais le faire avec un cas particulier mais ce n'est pas vraiment un bon moyen de codage je pense).

Merci à l'avance

Répondre

0

Consume(int As IBaseInterface) est toujours appelé comme paramètre DoWork(argument As IBaseInterface) est toujours de type IBaseInterface due à la coulée automatique, de sorte que la résolution de surcharge est correspondant le plus proche. Si vous modifiez votre paramètre pour qu'il devienne un objet, il doit correspondre. Comme ceci:

Public Function DoWork(argument As Object) As String 
    Return Consume(argument) 
End Function