我有以下设置,我正在创建我的接口的注册表,但我不知道如何使用泛型。下面当然给我一个编译错误。设置这样的东西的正确方法是什么?我将有多个MyInterface实现,所以我希望能够在运行时从注册表访问它们。
public interface MyInterface<T1, T2> {
}
public static class ApiEntityMapperRegistry {
private static Dictionary<Type, Type> registry = new Dictionary<Type, Type>();
public static void Register<T2, T3>() {
if (!registry.ContainsKey(typeof(T2))) {
registry.Add(typeof(T2), typeof(T3));
}
}
// this method doesn't compile
public static MyInterface<T1, T2> GetMapper(){
return null;
}
}
}
或许或许有更好的方法在一起?
答案 0 :(得分:3)
如果您希望编译代码,请使用泛型方法定义:
public static IApiEntityMapper<T1, T2> GetMapper<T1, T2>(){
return null;
}