C# 是否使用没有指定类型的泛型接口?

C# 是否使用没有指定类型的泛型接口?,c#,generics,C#,Generics,我在下面的设置中创建了一个接口注册表,但我不知道如何使用泛型。下面的代码当然给了我一个编译错误。设置这样的东西的正确方法是什么?我将拥有MyInterface的多个实现,因此我希望能够在运行时从注册表访问它们 public interface MyInterface<T1, T2> { } public static class ApiEntityMapperRegistry { private static Dictionary<Type, Type>

我在下面的设置中创建了一个接口注册表,但我不知道如何使用泛型。下面的代码当然给了我一个编译错误。设置这样的东西的正确方法是什么?我将拥有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;
        }
    }
}
公共接口MyInterface{
}
公共静态类ApentityApperRegistry{
私有静态字典注册表=新字典();
公共静态无效寄存器(){
if(!registry.ContainsKey(typeof(T2))){
添加(typeof(T2)、typeof(T3));
}
}        
//此方法无法编译
公共静态MyInterface GetMapper(){
返回null;
}
}
}

或者有更好的方法吗?

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

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

如果要编译代码,请使用通用方法定义:

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

如果要编译代码,请使用通用方法定义:

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

如果要编译代码,请使用通用方法定义:

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

GetMapper()的
GetMapper()可能也应该有泛型类型参数<代码>GetMapper()
什么是“IApiEntityMapper”?@AdrianNasui-修复。。。这是我的界面,如果你的编译方式正确,会很有用吗?不清楚您到底想做什么,但我相信您正在寻找IOC容器,例如ninject。
GetMapper()
可能也应该有泛型类型参数<代码>GetMapper()什么是“IApiEntityMapper”?@AdrianNasui-修复。。。这是我的界面,如果你的编译方式正确,会很有用吗?不清楚您到底想做什么,但我相信您正在寻找IOC容器,例如ninject。
GetMapper()
可能也应该有泛型类型参数<代码>GetMapper()什么是“IApiEntityMapper”?@AdrianNasui-修复。。。这是我的界面,如果你的编译方式正确,会很有用吗?不清楚您到底想做什么,但我相信您正在寻找IOC容器,例如ninject。
GetMapper()
可能也应该有泛型类型参数<代码>GetMapper()什么是“IApiEntityMapper”?@AdrianNasui-修复。。。这是我的界面,如果你的编译方式正确,会很有用吗?不清楚您到底想做什么,但我相信您正在寻找IOC容器,例如ninject。@Adamlevit不幸的是,它与返回类型相关,因此它与总体method@AdamLevitt由于C#是静态类型,泛型类型不是动态类型,您仍然需要拥有返回类型的所有必要信息。否则,您只需返回一个
类型
,然后需要稍后对其进行强制转换;但这仍然需要您知道目标类型。@Adamlevit不幸的是,它与返回类型相关,因此它与总体类型相关method@AdamLevitt由于C#是静态类型,泛型类型不是动态类型,因此您仍然需要拥有返回类型的所有必要信息。否则,您只需返回一个
类型
,然后需要稍后对其进行强制转换;但这仍然需要您知道目标类型。@Adamlevit不幸的是,它与返回类型相关,因此它与总体类型相关method@AdamLevitt由于C#是静态类型,泛型类型不是动态类型,因此您仍然需要拥有返回类型的所有必要信息。否则,您只需返回一个
类型
,然后需要稍后对其进行强制转换;但这仍然需要您知道目标类型。@Adamlevit不幸的是,它与返回类型相关,因此它与总体类型相关method@AdamLevitt由于C#是静态类型,泛型类型不是动态类型,因此您仍然需要拥有返回类型的所有必要信息。否则,您只需返回一个
类型
,然后需要稍后对其进行强制转换;但这仍然需要您知道目标类型。