Привет всем Я стараюсь использовать два объекта для определенного типа, основанного на информации отражения свойств. Я хочу сделать это динамически, поэтому мне не нужны кучи коммутационных шкафов и такие для каждого типа, что два объекта могут быть в этом классе. В целом они будут в основном быть int или float. В настоящий момент я пытаюсь использовать ключевые слова «var» и «object», чтобы сохранить значение входящей корректировки и исходное значение свойства.Dynamically Casting Objects
// .. snip
/* Get property information. */
PropertyInfo propInfo = classObj.GetType().GetProperty("property-name");
if (propInfo == null)
continue;
/* Prepare object values. */
object orgVal = propInfo.GetValue(classObj, null);
object adjVal = Convert.ChangeType(strAdjust, propInfo.GetType(), new CultureInfo("en-us"));
// .. math on objects here
// ex. orgVal += adjVal;
// .. snip
Значение регулировки входящего в строке, но это ни в «Int» или в формате «» флоат поэтому он будет легко преобразован. Все это прекрасно работает, только для кастинга можно настроить исходное значение с новым значением корректировки, которое является проблемой.
Я знаю, что с .NET 4.0 есть ключевое слово «dynamic», которое могло бы выполнить что-то подобное, но в настоящее время я застрял с использованием 3.5.
Оба объекта будут использовать этот тип из информации о свойствах propInfo.GetType().
Любая помощь с этим была бы весьма благодарна, я уверен, что я, вероятно, не замечаю здесь основную вещь, чтобы добиться этого. Заранее спасибо.
-CK
Edit:
забыл упомянуть, извините, это в настоящее время разрабатывается на Zune HD, так что основа у меня есть доступ к довольно ограничен тем, что может/не может быть использован ,
Извините, КК, я действительно не могу понять из вопроса, что вы пытаетесь выполнить. Почему вы пытаетесь это сделать и какую ошибку вы видите при запуске кода? –
Конечным результатом является динамическая обработка математики на двух объектах, которые могут быть разных типов во время выполнения на основе информации о свойствах, возвращаемой из отражения.Например:
Вы не можете сделать это с переменными 'object', поэтому я ищу способ их отличить, не имея при этом строгий код, или использование блоков проверок и статически кодированных преобразований для каждого типа. –Я не уверен, что это возможно быть честным. Не имея случая переключения if-elseif, я понятия не имею, как это можно сделать (даже с динамикой). Typecasting обрабатывается compiletime (если я не ошибаюсь, что может быть так), и, чтобы это было сделано динамически, я не думаю, что это возможно. Однако, если это просто цифры, почему бы просто не бросить все, чтобы удваивать/плавать? – Alxandr