Je comprends comment écrire une interface fonctionne dans C #, comme par exemple décrit ici: Explication de CodeGuru
Human human = new Human(); // The human object is casted to the interface type IIntelligence humanIQ = (IIntelligence)human; humanIQ.intelligent_behavior();
7 Réponses :
Il est d'avoir accès à une implémentation d'interface explicite.
Parfois, vous voulez cacher le fait qu'une classe implémente une interface. Ceci est fait en implémentant l'interface explicitement. P>
Parfois, vous ne savez peut-être pas ce qu'est un objet, mais vous savez qu'il implémente une certaine interface. P>
Pourrait arriver, je suppose que vous feriez un baseObject est iterface code> pour vérifier. Curieux que le paramètre de méthode n'est pas saisi sur
IINTERFACE code> déjà.
Pour la même raison, vous lanceriez une classe dérivée de votre classe de base. P>
Exemple bref et populaire. Nous pouvons mettre en œuvre ce code:
Iintelligence d'interface
{
Talk String ();
} puis nous pouvons utiliser le code suivant: p> pour des informations plus détaillées, voir "Polymorphisme dans la programmation orientée objet" dans Google. P> p>
Considérez cette situation. J'ai ajouté une méthode à votre exemple.
interface IIntelligence { bool intelligent_behavior(); } class Human: IIntelligence { public Human() { } /// Interface method definition in the class that implements it public bool IIntelligence.intelligent_behavior() { Console.WriteLine("........"); return true; } //Some other method definition public bool intelligent_behaviour() { return false; } }
.NET propose deux types d'implémentations d'interface impliquant une implémentation implicite et une mise en œuvre explicite.
Lorsque vous utilisez une implémentation implicite, elle fera partie de l'interface de type elle-même, par exemple si vous avez une interface iPerson comme celle-ci: P > et vous l'implémentez comme suit: p> Vous pouvez y accéder comme ceci (implicitement): p> ((IPerson)aPerson).Name;
J'ai trouvé de la coulée à l'interface utile lors du développement de plugins pour une application principale. J'ai créé trois projets. Premier projet "Connectorinterface" ne contient qu'une seule définition de classe qui est intégrée. Code de l'interface:
Assembly assembly = Assembly.LoadFile(path); // path to dll Type type = assembly.GetType("dataSource1.DataReader"); object myInstance = Activator.CreateInstance(type); MethodInfo method = type.GetMethod("getConnectorDataReader"); object data = method.Invoke(myInstance, null); IConnectorDataReader reader =(IConnectorDataReader)data; // method usage while (reader.readNextRecord() == true) ....