对于同一主题的多个问题,我很抱歉,但我对仿制药不熟悉,虽然我觉得它很有吸引力,但事实证明它有点莫名其妙。
我需要使用泛型来检索词典中的条目,如果该条目不存在,我需要创建它。 Dictionary Key是一个String,Value是一个容器类 - 在本例中是PersonObject类型,但它可以是任何类型。由于dtb和p.s.w.g,我目前的工作效果很好,但我需要以某种方式创建新对象的通用。
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?
感谢您的帮助。
答案 0 :(得分:2)
list.Add(property, Activator.CreateInstance(source.GetType());
答案 1 :(得分:-1)
谢谢大家的帮助。这让我找到了解决问题的方法,我找到了here。
对于那些遇到同样问题的人,我修改了代码,使其显示为:
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()给了我字典的参数类型。