У меня есть класс:вызова делегата с дженериков аргументами в C#
public class MyClass<T>
{
public string TestProperty { get; set; }
}
и я хочу создать делегат для запуска на экземпляры этого класса, таких как:
Action<MyClass<object>> myDelegate = myclass => myclass.TestProperty = "hello";
Однако, над делегатом не может быть вызвано ничего, кроме MyClass<object>
, например MyClass<DateTime>
или MyClass<string>
.
Как я могу определить делегат или изменить делегат, чтобы я мог выполнить делегат на MyClass<T>
, где T
- это что-нибудь, что расширяет object
?
Edit: Это может ждать до C# 4, если тот, когда это становится возможным (если это так, пожалуйста, еще скажите мне, как), хотя я бы предпочел, чтобы с ней сейчас в 3,5
Edit: я на самом деле также есть 2-й класс:
public class MyDerivedClass<T1, T2> : MyClass<T1>
{
public int OtherProp { get; set; }
}
в идеале ид нравится использовать следующий синтаксис для определения некоторых делегатов:
CreateDelegate<MyClass<object>>(mc => mc.TestProperty = "hello");
CreateDelegate<MyDerivedClass<object, object>>(mc => mc.OtherProp = 4);
Затем данный объект, ид нравится видеть, которые делегируют аргументы совпадают, а затем запустить их
Возможно ли это? Какие альтернативы мне нужны для создания таких делегатов?
Благодаря
спасибо за помощь, см. Мой комментарий @Tony и обновленный вопрос –
интерфейсы были ответом, просто нужно было перестать быть глупым! –