Несмотря на множество примеров, я все еще не понимаю.
У меня есть 1 решение visualstudio с несколькими проектами внутри
1 из этих проектов - консольное приложение
namespace Test
-> имя сборки Test
1 из этих проектов - библиотека классов
namespace Mayhem
-> название сборки - Mayhem
В библиотеке классов есть несколько классов
namespace Mayhem
{
public class Step1
{
public int Id { get; set; }
public string Title { get; set; }
}
}
Я могу получить доступ к библиотеке классов из консольного приложения. Но я хотел бы получить доступ к библиотеке классов через Reflection. Основываясь на некоторых других решениях, я придумал что-то вроде этого, но это все еще дает мне TypeLoadException
namespace Test
{
class Program
{
private static void Main(string[] args)
{
string[] ClassArray = new string[] { "Mayhem.Step1", "Mayhem.Step2" };
foreach (var item in ClassArray)
{
Type type = Type.GetType(item, true);
object instance = Activator.CreateInstance(type);
PropertyInfo prop = type.GetProperty("Title");
prop.SetValue(instance, item, null);
Console.WriteLine(SetSegment.ToMessageSegment(instance));
}
}
}
}
Вопрос: что я делаю не так?
Из принятого ответа на вашу самую первую ссылку - «Type.GetType (« namespace.qualified.TypeName ») работает только тогда, когда тип найден либо в mscorlib.dll, либо в текущей выполняющейся сборке.». Вы верите, что любое из этих условий подходит для вашего типа? И быстрая проверка документации подтверждает, что GetType(string,boolean) имеет такое же ограничение.
@wiktor какая сборка? Эта строка [] ClassArray = новая строка [] {"Mayhem.Step1, Mayhem", "Mayhem.Step2, Mayhem"}; это, к сожалению, не работает.
@Damien Type.GetType ("namespace.qualified.TypeName") ==> Я не совсем понимаю ответ (как я уже сказал) Type.GetType ("Mayhem.?. Step1"); Что мне заполнять ответ?
Mayhem.Step1, Mayhem должен работать с определенно, если вы не пропустите ссылку между сборками или класс не является общедоступным.





Вы пробовали использовать полное имя: «Mayhem.Step1, AssemblyName», где
AssemblyNameбудет фактическим именем сборки?