Вы никогда не упоминаете, какой объект вы проверяете, и поскольку вы отвергаете те, которые ссылаются на данный объект, я предполагаю, что вы имеете в виду статический.
using System.Reflection;
public object GetPropValue(string prop)
{
int splitPoint = prop.LastIndexOf('.');
Type type = Assembly.GetEntryAssembly().GetType(prop.Substring(0, splitPoint));
object obj = null;
return type.GetProperty(prop.Substring(splitPoint + 1)).GetValue(obj, null);
}
Обратите внимание, что я отметил объект, который проверяется с локальной переменной obj
. null
означает статичность, в противном случае установите его на то, что вы хотите. Также обратите внимание, что GetEntryAssembly()
является одним из нескольких доступных методов для получения «текущей» сборки, вы можете захотеть поиграть с ним, если вам трудно загружать этот тип.