指定された型の配列を返すジェネリックメソッドを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
。
どんな助けでもありがたいですありがとう!