我是C#NewBie,我遇到的情况是我知道对象的类型(ClassName)
ObservableCollection<ClassName>
现在我需要使用它来转换与
相同的返回对象ObservableCollection<object>
我该怎么办呢
ObservableCollection<type>
其中type是ClassName的类型?是否有可能当我拥有ClassName的类型时我可以使用它而不是ClassName,如果不是我如何实现它?
答案 0 :(得分:1)
具体类的通用参数永远不会共变。在接口上,如果它们既可以用作输入参数,也可以用作输出参数,但它们只能是变体,但不能同时使用。
因此,您无法将ObservableCollection<T>
投射到ObservableCollection<object>
。
答案 1 :(得分:0)
我对你的措辞感到有点困惑,你的意思是:
typeof(ClassName)
答案 2 :(得分:0)
试试这个:
return new ObservableCollection<object>(myClassNameObservableCollection);
答案 3 :(得分:0)
从你问题的最后一句我觉得你需要那个
所以你可以这样做:
Type generic = typeof(ObservableCollection<>);
Type[] typeArgs = { typeof(ClassName) };
Type constructed = generic.MakeGenericType(typeArgs);
var obj = Activator.CreateInstance(constructed);