Ok, j'ai la structure suivante. Fondamentalement, une architecture de pluginComment obtenir le nom de la classe
// assembly 1 - Base Class which contains the contract
public class BaseEntity {
public string MyName() {
// figure out the name of the deriving class
// perhaps via reflection
}
}
// assembly 2 - contains plugins based on the Base Class
public class BlueEntity : BaseEntity {}
public class YellowEntity : BaseEntity {}
public class GreenEntity : BaseEntity {}
// main console app
List<BaseEntity> plugins = Factory.GetMePluginList();
foreach (BaseEntity be in plugins) {
Console.WriteLine(be.MyName);
}
Je voudrais la déclaration
be.MyName
pour me dire si l'objet est BlueEntity, YellowEntity ou GreenEntity. L'important est que la propriété MyName soit dans la classe de base, car je ne veux pas réimplémenter la propriété dans chaque plugin.
Est-ce possible en C#?
Ce n'est pas exactement ce que le questionneur était recherche (voir la question les commentaires qu'il a ajoutés à la méthode MyName) – hhafez
Le résultat final et la méthode sont les mêmes. – JaredPar
Le résultat final est le même, vrai, mais il va confondre l'enfer d'une personne qui va maintenir le code après moi. Je vais rester avec le .GetType dans le getter de propriété. – AngryHacker