Как я могу использовать Convert.ChangeType для приведения к определенному классу? - PullRequest
1 голос
/ 28 января 2010

Кто-нибудь знает, как я могу использовать Convert.ChangeType для преобразования из XML в определенный класс?

Например:

Моя собственность

public Point Loc
{
    get { return GetValue<Point2D>("Loc"); }
    set { SetValue<Point2D>("Loc", value); }
}

Мой XML:

<Loc>
 <X>1.0</X>
 <Y>1.0</Y>   
</Loc>

Позвоните, чтобы преобразовать:

prop.SetValue(targetObj, 
             Convert.ChangeType(xmlProperty.Value, prop.PropertyType));

Я рассмотрел использование IConvertible, но ни один из методов не вызывается.

Все примеры, которые я смог найти, используют простые типы. Нет показа приведения к экземпляру класса.

Спасибо,

Rick

1 Ответ

0 голосов
/ 28 января 2010

Почему вы думаете, что вам нужно Convert.ChangeType()?

Конечно, вы можете просто вызвать SetValue() для объекта PropertyInfo, используя следующий перегруженный метод SetValue .:

prop.SetValue(targetObj,xmlProperty.Value,null);

Однако сначала вам нужно будет создать экземпляр определенного типа, используя что-то вроде Activator.CreateInstance() и установить отдельные свойства для Точки. Затем вы назначаете этот точечный объект / структуру в качестве входных данных для SetValue, как он у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...