Передайте имя класса в качестве параметра и создайте новый объект - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь создать функцию, в которой я передаю либо имя класса, либо пустой объект, а затем создаю новый и добавляю его в список.Я пробовал несколько разных способов, которые я нашел в Интернете, но, похоже, он не работает для передачи в качестве функции или создания объекта, а не для того и другого и ни для списка.

    class Program
    {
        static void Main(string[] args)
       {
           Read("TestObject");
       }
       static void Read(string classname)
       {
           List<Object> listObject = new List<object>(); //Not sure what to do
           typeOf(classname) n = new typeOf(classname)(); //Not sure what to do
           listObject.Add(n);
       }
    }

    public class TestObject
    {
        public string Col1 { get; set; }
        public string Col2 { get; set; }
    }

Ответы [ 2 ]

1 голос
/ 10 июня 2019

Подписан на эту запись , используйте:

public object GetInstance(string strFullyQualifiedName)
{         
     Type t = Type.GetType(strFullyQualifiedName); 
     return  Activator.CreateInstance(t);         
}
0 голосов
/ 11 июня 2019

попробуйте этот пример в linqpad. Вы пропустили полное имя класса (в данном случае это будет «UserQuery + test»)

void Main()
{
    test tt = new test();
    GetInstance(tt.GetType().ToString());
}

public object GetInstance(string strFullyQualifiedName)
{
    var t = Type.GetType(strFullyQualifiedName).Dump();
    var res = Activator.CreateInstance(t);
    return  res;
}

public class test{
    public int id {get;set;}
    public test(){}
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...