Естественно, это не сработает, потому что вы смешиваете типы со значением (или экземплярами) типов.
Вам, вероятно, понадобится изучить PropertyInfo.GetValue
(PropertyInfo.SetValue
может быть таким же актуальным, в зависимости от того, что вы хотите делать дальше, тоже) - но я думаю, что вам, возможно, придется подумать, что именно вы хотите делать;в вашем примере, например, вы можете просто вернуть объект или, возможно, динамический, поскольку вы создаете экземпляр и обрабатываете значение напрямую.Но звучит так, будто вы хотите получить значение существующего экземпляра чего-либо.
Скажем, если у вас есть A
и B
, вы хотите получить значение B.a
и установить A.a
с этим не понятно из вашего объяснения, почему вы не можете просто сделать B.a = A.a
или для чего предназначен дискриминатор num
;но если вы действительно должны использовать отражение , а уже имеют PropertyInfo
, то:
public dynamic GetSomeValue(object instance, PropertyInfo property)
{
return property.GetValue(instance, null);
}
Хотя это далеко не идеально, ив большинстве случаев ущербен, если не излишним - надеюсь, будет достаточно информации, которая позволит вам объединить то, что вы можете сделать с тем, что вам нужно сделать.