J'ai une classe:délégué invoquant des arguments génériques en C#
public class MyClass<T>
{
public string TestProperty { get; set; }
}
et je veux créer un délégué pour exécuter sur les instances de cette classe, tels que:
Action<MyClass<object>> myDelegate = myclass => myclass.TestProperty = "hello";
Cependant, la Le délégué ci-dessus ne peut pas être appelé avec autre chose qu'un MyClass<object>
, tel que MyClass<DateTime>
ou MyClass<string>
.
Comment puis-je soit définir le délégué, ou modifier le délégué afin que je puisse exécuter le délégué sur un MyClass<T>
où T
est quelque chose qui étend object
?
Edit: Cette peut attendre que C# 4 si c'est lorsque cela devient possible (si oui, s'il vous plaît me dire encore comment), bien que je préfère passer à autre chose maintenant à 3,5
edit: J'ai fait aussi une 2ème classe:
public class MyDerivedClass<T1, T2> : MyClass<T1>
{
public int OtherProp { get; set; }
}
id Idéalement aiment utiliser la syntaxe suivante pour définir des délégués:
CreateDelegate<MyClass<object>>(mc => mc.TestProperty = "hello");
CreateDelegate<MyDerivedClass<object, object>>(mc => mc.OtherProp = 4);
alors donné un objet, jaimerais voir quels arguments délégué correspondent, puis les exécuter
Est-ce possible? Quelles alternatives ai-je pour créer de tels délégués?
Merci
merci pour l'aide, voir mon commentaire @Tony et la question mise à jour –
interfaces étaient la réponse, juste besoin d'arrêter d'être daft! –