我想在C#中创建一个泛型方法,它将返回指定类型的数组。这就是我的方法看起来像此刻:带有返回数组类型参数的方法
private T[] GetKeys<T>(string key, Dictionary<string, object> obj) where T : new()
{
if (obj.ContainsKey(key))
{
object[] objs = (object[])obj[key];
T[] list = new T[objs.Length];
for (int i = 0; i < objs.Length; i++)
{
list[i] = (T)Activator.CreateInstance(
typeof(T),
new object[] {
(Dictionary<string, object>)objs[i]
});
}
return list;
}
else
{
return null;
}
}
由于这一类是内部使用,并且是不可用的库我已经知道哪些类将被放入<T>
。所有的类在它们的构造器中都有相同的参数。但是在这个代码甚至编译之前,我必须给他们一个没有参数的公共构造器。现在,当我到达Activator.CreateInstance
行时,我收到一个错误,说Constructor on type 'MyNamespace.MyClass+MyOtherClass' not found
。 MyClass
是包含上述方法的类。 MyOtherClass
是作为T
传入的类。
任何帮助将不胜感激谢谢!
理想情况下,我想构造函数是内部的。但是,我不太理解如何使用GetConstructor所需的附加参数,因此我认为我现在只需选择公共构造函数。 –