У меня есть список строк с именами классов. Мне нужно создать экземпляры их с помощью Activator, но все они могут быть в разных пространствах имен. Классы могут перемещаться в другое пространство имен в будущем, поэтому я не могу его жестко кодировать.Как найти пространство имен класса по его имени, используя отражение в .net-ядре?
ответ
Если вы знаете, что у вас никогда не будет нескольких типов с тем же именем, которые находятся в разных пространствах имен, вы можете просто перебирать все типы в сборке и фильтровать имя типа. Например, это работает:
var typenames = new[] { "String", "Object", "Int32" };
var types = typeof(object).GetTypeInfo().Assembly
.GetTypes()
.Where(type => typenames.Contains(type.Name))
.ToArray(); // A Type[] containing System.String, System.Object and System.Int32
Это не обязательно сломается, если у вас есть несколько типов с тем же именем, но вы получите все из них в списке.
Он не работает с .Net Core. 'Assembly не имеет определения GetAssembly.' – MKasprzyk
Он работает, но вам, возможно, придется добавить зависимость сборки сборки к вашему project.json. Дайте мне несколько минут, и я посмотрю, смогу ли я выяснить, какой из них. –
@MKasprzyk с сетевым ядром вы можете использовать 'typeof (object) .GetTypeInfo(). Assembly' для сборки. –
Вы можете получить все типы сборки и найти тот, у кого есть соответствующее имя.
var type = assembly.GetTypes().FirstOrDefault(x => x.Name == name);
Примечание: название может быть не уникальным. В таком случае у вас нет возможности найти правильный тип, если только вы не можете догадываться о пространстве имен 8e.g. список возможных пространств имен, «черный список» пространств имен и т. д.)
- 1. C# /. NET Как найти содержащее пространство имен из имени класса
- 2. Как найти пространство имен для класса C#?
- 3. Найти элемент по имени класса
- 4. Есть ли способ получить Тип по имени, используя отражение Go?
- 5. Как найти пространство имен XML избежать другого имени в jQuery
- 6. Как я могу получить ссылку на форму из класса по имени, используя отражение в C#?
- 7. Замените пространство имен по умолчанию, используя XSL
- 8. , не используя пространство имен в выражении xpath
- 9. Найти определенный класс в файле, используя отражение?
- 10. используя пространство имен в C#
- 11. Создание экземпляра производного класса из строки его имени. (Т.е., отражение)
- 12. найти элементы по имени класса
- 13. Отражение в рубине. Игнорировать объект по заданному имени класса
- 14. C++, используя пространство имен в исходных файлах
- 15. Как найти файл по его имени?
- 16. C++: Наследует ли класс от класса его в пространство имен?
- 17. Как найти файл по его частичному имени?
- 18. пространство имен Затенение Имя класса
- 19. Не удалось найти kendoNumericTextBox по имени класса
- 20. как ПолучитьЗначение из класса, используя отражение, с #
- 21. C# дизассемблирование по умолчанию пространство имен модуль класса
- 22. Отражение - метод вызова динамически по указанному имени класса
- 23. Не удается найти пространство имен в глобальном
- 24. пространство имен против класса вложенности
- 25. Visual Studio Test Explorer Group по имени Пространство имен
- 26. Пространство имен XSLT и пространство имен по умолчанию
- 27. Импорт пространство имен не может найти пространство имен
- 28. пространство имен сфера против объема внутри класса
- 29. Как найти полное пространство имен символа?
- 30. C++ добавление класса в пространство имен: почему?
Заблокирован ли вам список 'string', или у вас есть список' Type' вместо? Если у вас есть только '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '? –
К сожалению, я заблокирован. Список классов из текстового файла, и мне нужно создать соответствующие объекты. – MKasprzyk
Обязательно ознакомьтесь с этой темой: [Как получить все классы в пространстве имен?] (Https://stackoverflow.com/questions/949246/how-to-get-all-classes-within-namespace/949285# 949285) –