繁体   English   中英

使用泛型创建新对象

[英]Using Generics to Create a New Object

对于同一主题附近如此之多的问题,我感到很抱歉,但是对于泛型我还是陌生的,尽管我发现它很着迷,但事实也令人困惑。

我需要使用泛型来检索Dictionary中的条目,如果该条目不存在,则需要创建它。 字典键是一个字符串,值是一个容器类-在这种情况下,类型为PersonObject,但它可以是任何类型。 多亏了dtb和pswg,我目前的工作状况良好,但是我需要以某种方式使新对象的创建成为通用的。

IDictionary list = source.GetType().GetProperty(dictionaryName).GetValue(source, null) as IDictionary;
if (!list.Contains(property))
    list.Add(property, new HobbyObject());

我想创建一个我正在访问的Dictionary定义的类型的新对象,而不是new HobbyObject() 甚至可以通过反射来完成,还是只需要为所有可能传入的字典编写一个大型Switch Case?

感谢您的协助。

使用Activator.CreateInstance

list.Add(property, Activator.CreateInstance(source.GetType());

谢谢大家的帮助。 它为我找出解决方案提供了很长的路要走,我在这里找到了解决方案。

对于那些有相同问题的人,我修改了代码,使其内容如下:

IDictionary list = source.GetType().GetProperty(dictionaryName).GetValue(source, null) as IDictionary;
if (!list.Contains(property))
{
    Type[] arguments = list.GetType().GetGenericArguments();
    list.Add(property, Activator.CreateInstance(arguments[1]));
}

GetGenericArguments()给了我字典的参数类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM