Note: je sais que c'est une très mauvaise idée dans la pratique; je suis juste curieux de savoir ce que le CLR vous permettre de le faire, avec l'objectif de créer une sorte de "modifier une classe après la création de ce' préprocesseur.
Supposons que j'ai la classe suivante, qui a été définie dans une autre assemblée, donc je ne peux pas le changer.
class Person {
public string Greet() => "Hello!";
}
Je vais maintenant définir une interface, et une méthode, comme suit:
interface IGreetable {
string Greet();
}
// ...
void PrintGreeting(IGreetable g) => Console.WriteLine(g.Greet());
La classe Person
n'est pas explicitement de mettre en œuvre IGreetable
, mais il pourrait le faire sans aucune modification de ses méthodes.
Avec qui, est-il quelque manière que ce soit, à l'aide de la Réflexion, de la DLR ou quoi que ce soit d'autre, dans lequel une instance d' Person
pourrait être passé avec succès PrintGreeting
sans modification du code ci-dessus?