Инициализировать общий класс по строке

Moinul Islam спросил: 12 мая 2018 в 03:40 в: c#

У меня есть строка "MyClass". Есть ли способ инициализировать общий объект по строке?

public void LoadToCache<T>(string key) where T : class, new()
{
  //string key is a class name like "MyClass"
    using (var bl = new BusinessLayer<key>())
    {
       bl.GetAll();
    }
} 
//---------------------------------------------------------------
public class BusinessLayer<T> where T : class
{
  ..
  ..
}
//---------------------------------------------------------------
public class MyClass
{
  ..
  ..
}

1 ответ

Filipe Ferreira ответил: 12 мая 2018 в 06:23

Вы можете получить типы из своей сборки путем отражения и создать экземпляр с помощью Activator.CreateInstance.

Я надеюсь, что это поможет:

Мой класс:

public class Car
{}

Метод:

string myClass = "Car";
var types = Assembly.GetExecutingAssembly().GetTypes().ToList();
var myType = types.FirstOrDefault(i => i.IsClass && i.Name == myClass);
var instance  = Activator.CreateInstance((Type) myType);Console.Write(instance.ToString());