Я пытаюсь создать универсальный метод в 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
.
Любая помощь будет оценена Спасибо!