Member 13454019 Ответов: 2

Создание объекта из строки


Всем привет,

Есть несколько вопросов и ответов по этой теме, но ни один из них не решает мою проблему. Я совсем новичок в c#.

У меня есть класс и строковое значение. Если строковое значение совпадает с именем класса, создайте новый объект из этого класса.

значение строки "основной"
а имя класса - " базовый"

Я знаю, что решение-это сборка.CreateInstance, но он всегда получает null , не может успешно создать ни одного экземпляра.

Имя: TTT Publickeytoken=null
Кодовая база: путь к TTT.exe файл

Что я уже пробовал:

namespace TTT
{ 
    public class Basic
    {
        public string Id { get; set; }
        public int SourceSystem { get; set; }
    }
 public class Message_Tag_Info
    {
        public string Id { get; set; }
        public string ClassCode { get; set; }
        public string ClassName { get; set; }
    }

   class Program
    {
        static void Main(string[] args)
        {
            Message_Tag_Info message = new Message_Tag_Info();
            
            string tmp = "Basic";
            message.ClassName = tmp;


           Type t = Type.GetType("TTT."+message.ClassName);

           Assembly assem = Assembly.GetAssembly(t);
           Console.WriteLine("Name: {0}", assem.FullName);        
           Console.WriteLine("CodeBase: {0}", assem.CodeBase);

       var obj = Assembly.GetExecutingAssembly().CreateInstance(message.ClassName);

           Console.ReadLine();

        }
        
    }
}

2 Ответов

Рейтинг:
1

F-ES Sitecore

Вы делаете CreateInstance только на "Basic", и этого недостаточно для размышления, чтобы понять, какой класс вы имеете в виду, ему нужно полное имя TTT. Basic

Ниже я использую вместо этого t. FullName

var obj = Assembly.GetExecutingAssembly().CreateInstance(t.FullName);


Member 13454019

большое спасибо, это работает.

Рейтинг:
0

Member 13454019

спасибо