平台: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 中的类型调用上述工厂。然而,这回来了一个例外:
找不到类型或命名空间名称“调用”。
显然这是因为对泛型方法的任何调用都需要根据我在编译时的理解明确知道类型。显然,在这种情况下我不能这样做,而且我绝对不会在我的所有 DTO 对象上执行 switch 语句。
那么,你们能提出一个策略或指出我做错了什么吗?我正在尝试使其尽可能通用,以便它可以适用于我的所有对象和任何新对象以及其他项目的代码可移植性。
提前致谢!