Доступ к классу в другом пространстве имен, но с тем же решением

Несмотря на множество примеров, я все еще не понимаю.

У меня есть 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));
        }

        }
    }
}

Вопрос: что я делаю не так?

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

Wiktor Zychla 14.06.2018 15:59

Из принятого ответа на вашу самую первую ссылку - «Type.GetType (« namespace.qualified.TypeName ») работает только тогда, когда тип найден либо в mscorlib.dll, либо в текущей выполняющейся сборке.». Вы верите, что любое из этих условий подходит для вашего типа? И быстрая проверка документации подтверждает, что GetType(string,boolean) имеет такое же ограничение.

Damien_The_Unbeliever 14.06.2018 16:02

@wiktor какая сборка? Эта строка [] ClassArray = новая строка [] {"Mayhem.Step1, Mayhem", "Mayhem.Step2, Mayhem"}; это, к сожалению, не работает.

Bunkerbuster 14.06.2018 16:41

@Damien Type.GetType ("namespace.qualified.TypeName") ==> Я не совсем понимаю ответ (как я уже сказал) Type.GetType ("Mayhem.?. Step1"); Что мне заполнять ответ?

Bunkerbuster 14.06.2018 16:45
Mayhem.Step1, Mayhem должен работать с определенно, если вы не пропустите ссылку между сборками или класс не является общедоступным.
Wiktor Zychla 15.06.2018 09:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
36
0

Другие вопросы по теме