Это похоже на Вызов метода с использованием отражения на одноэлементном объекте , но он имеет гораздо более глубокий контекст. Во-первых, я хочу сказать, что это проект, над которым я просто поигрался с идеями, это никоим образом не является производственным кодом, и проект пошел ОЧЕНЬ по другому пути, но эта проблема все еще преследует меня, так что вот так. *
У меня есть синглтон, который содержит только экземпляры объектов (которые, хотя и нестатические, по сути тоже синглтоны, но на которые ссылается базовый синглтон)
static CoreInstance()
{
Kernel = new Kernel();
Devices = new Devices();
Interfaces = new Interfaces();
Interoperability = new Interoperability();
Environment = new Environment();
Data = new Data();
}
обычно это было бы хорошо, но они сами часто являются объектами-контейнерами, например, я мог бы сделать следующее:
CoreInstance.Kernel.RaiseError("I'm an error lol!", ErrorLevel.Trivial);
-или-
string username = CoreInstance.Environment.User.FullName;
но я делаю это из пользовательской командной консоли, что является еще одним обсуждением для более позднего вопроса SO; -)
поэтому основной вопрос здесь таков: как написать рекурсивную функцию отражения, чтобы разделить строку пути к классу, подобную этой, для выполнения метода / оценки свойства?
Примечание:
предположим, что вызов уже разбит на структуру, содержащую упорядоченный строковый массив для элементов пути, строку для метода / свойства и массив объектов для параметров.