Лучший способ - просто вернуть фактический тип, с которым вы имеете дело, из метода
Но если это не вариант, и вы действительно застряли сobject
возвращается из вашего метода, у вас есть несколько вариантов.
Если вы знаете правильный тип, приведение будет самым простым способом:
((ActualType)x).SomeProperty;
Или для проверки правильности приведения:
string val;
if (x is ActualType)
val = (x as ActualType).SomeProperty;
Или, если вы знаете имя свойства, но не тип x, тогда:
PropertyInfo pi = x.GetType().GetProperty("SomeProperty");
string somePropertyValue = (string)pi.GetValue(x, null);
Или, если вы 'Если вы используете C # 4, вы можете использовать dynamic
string somePropertyValue = ((dynamic)x).SomeProperty;
Просто не сходите с ума от динамики. Если вы обнаружите, что чрезмерно используете dynamic
, возможно, что-то глубжепроблемы с вашим кодом.