C#中的多类泛型集合

杀人剂

我需要一个类型安全的多类型集合,例如,一个从通用标记类映射Tag<T>到type对象的映射T在Java中,我会这样写:

class ClassMap {
    private HashMap<Tag<?>,?> map = new HashMap<>();

    <T> void put(Tag<T> tag, T value){
        map.put(tag,value);
    }

    <T> get(Tag<T> tag){
        return (T) map.get(tag);
    }
}

集合是类型安全的,即,(T)当集合检查类是否与插入时的标签相对应时,强制转换将始终成功。

但是如何在C#中做到这一点?Afaik,C#中没有通配符,所以我不能HashMap<Tag<?>,?>在这里我怎样才能告诉C#我需要一个通用映射,但不能精确指定其参数?

无脑的编码员

你有试过吗?的所有类别C#均源自object

编辑:对象类参考-

http://msdn.microsoft.com/en-us/library/system.object.aspx

您可以object键入任何要键入的对象-

    class Tag<T>{

    }
    class ClassMap {
        private Dictionary<object, object> map = new Dictionary<object,object>();

        public void put<T>(Tag<T> tag, T value){
            map.Add(tag, value);
        }

        public T get<T>(Tag<T> tag){
            return (T)map[tag];
        }
    }
    public class Program
    {
        public static void Main(string[] args)
        {
            ClassMap v = new ClassMap();
            Tag<Int16> t = new Tag<short>();
            v.put<short>(t, 10);
            var tt = v.get<short>(t);
        }
    }

调试信息-

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#中的多类泛型集合

来自分类Dev

返回C#中作为集合的泛型类型

来自分类Dev

如何在C#中的泛型类中使用泛型类的对象?

来自分类Dev

C#集合类型约束泛型

来自分类Dev

C ++中的泛型类

来自分类Dev

C#在方法调用中扩展泛型类

来自分类Dev

在C#中创建泛型类的字典的辅助方法

来自分类Dev

C#覆盖泛型类中的基类属性

来自分类Dev

在C#中实例化泛型类

来自分类Dev

C#在方法调用中扩展泛型类

来自分类Dev

如何在C#中遍历泛型类的属性?

来自分类Dev

将引用转换为C#中的泛型类

来自分类Dev

嵌套泛型/抽象类C#中的嵌套泛型的继承

来自分类Dev

c#中具有泛型类的泛型方法

来自分类Dev

c#获取泛型类中泛型类型参数的名称

来自分类Dev

使用c#泛型扩展方法对类而非集合进行操作

来自分类Dev

泛型类的字段约束 - C#

来自分类Dev

从泛型类派生的c#问题

来自分类Dev

C ++:泛型类中的非泛型方法?

来自分类Dev

具有类继承和泛型类型继承的C#集合不允许添加继承的类

来自分类Dev

使用泛型类中的ArrayList实现集合

来自分类Dev

如何在打字稿中解析 C# 泛型集合列表

来自分类Dev

扩展集合泛型类的泛型类

来自分类Dev

当基类在C#中是泛型时,如何将子类转换为基类

来自分类Dev

C#创建包含泛型集合的泛型方法并调用Sum()

来自分类Dev

C# 泛型,其中 T 类:(继承类)

来自分类Dev

C#中的嵌套泛型问题

来自分类Dev

C#中泛型类型的缺点

来自分类Dev

C#中的泛型类型