Преобразование отраженного свойства в строку - PullRequest
0 голосов
/ 30 октября 2009

У меня проблема с преобразованием свойства объекта в строку при использовании отражения ...

string value = Convert.ToString(typeof(T).GetProperty(ValueField).GetValue(data, null));

Выдает «Объект не соответствует типу цели». при возврате любого типа кроме строки?

Ответы [ 3 ]

3 голосов
/ 30 октября 2009

Используйте встроенный метод типа ToString вместо вызова Convert.ToString. У всех типов есть метод ToString, унаследованный от object, тогда как Convert.ToString работает только для типов, которые реализуют интерфейс IConvertible.

string value =
    typeof(T).GetProperty(ValueField).GetValue(data, null).ToString();
2 голосов
/ 30 октября 2009

Вы не можете привести каждый объект к строке, но у каждого объекта есть метод ToString. Таким образом, вы можете изменить свой код на:

string value = typeof(T).GetProperty(ValueField).GetValue(data, null).ToString();
2 голосов
/ 30 октября 2009

Если по какой-то причине вы не хотите использовать метод ToString свойства, вы можете ограничить T классами, которые реализуют IConvertible:

public string DoSomething<T>(object data) where T: IConvertible { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...