Платформа: C # 2.0 WinForms
У меня есть фабричный класс, который обеспечивает создание экземпляра определенного преобразователя данных в зависимости от типа, который я отправляю, код таков:
public static IDataMapper<T> GetMapper<T>() where T: IDto
{
Type mapperType = MapperLocator.GetMapper(typeof(T));
return (IDataMapper<T>)mapperType.Assembly.CreateInstance(mapperType.FullName);
}
Я использую DynamicProxy2 для перехвата вызовов методов для моих объектов DTO. В моем методе перехвата я пытаюсь вызвать вышеупомянутую фабрику, используя тип из Invocation.TargetType. Однако это возвращается с исключением:
Не удалось найти тип или имя пространства имен 'invocation'.
Очевидно, это потому, что любые вызовы универсального метода должны явно знать тип из того, что я понимаю во время компиляции. Очевидно, что я не могу сделать это в этом случае, и я определенно не собираюсь делать оператор switch для всех моих объектов DTO.
Итак, вы, ребята, можете предложить стратегию или указать, что я делаю неправильно? Я пытаюсь сделать это как можно более универсальным, чтобы оно могло подходить для всех моих объектов и любых новых, а также переносимости кода в другие проекты.
Заранее спасибо!