使用没有特定类型的通用接口?

时间:2014-12-14 16:06:21

标签: c# generics

我有以下设置,我正在创建我的接口的注册表,但我不知道如何使用泛型。下面当然给我一个编译错误。设置这样的东西的正确方法是什么?我将有多个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;
        }
    }
}

或许或许有更好的方法在一起?

1 个答案:

答案 0 :(得分:3)

如果您希望编译代码,请使用泛型方法定义:

public static IApiEntityMapper<T1, T2> GetMapper<T1, T2>(){
    return null;
}