2015-12-29 4 views
0

У меня есть объект под названием myConstraint, который может иметь свойство под названием Parameter.Как получить и установить свойство объекта, которое может быть свойством другого объекта?

Parameter - объект, который имеет свойство Name, которое имеет тип string.

Я хочу, чтобы проверить Constraint и если он имеет свойство Parameter получить строку Parameter.Name и если оно равно «Length» Установить значение Constraint.Parameter в myLengthParameter.

Я не могу использовать Constraint.Parameter, поскольку компилятор не знает, имеет ли объект свойство Parameter до запуска программы. Я попытался использовать отражение, но я не мог понять это. Буду признателен за вашу помощь.

+0

В ролях 'object' к классу, например,' ((Constraint) myConstraint) .Parameter' – J3soon

+4

что вы имеете в виду * Может Иметь *? почему бы просто не поместить его туда, если вам не нужен параметр «Параметр», пусть это будет «null»? –

+0

@ kienct89: это не мой код, я просто использую этот класс. – Saeid

ответ

1

Да, вы можете использовать отражение, чтобы сделать это.

С Ограничение переменная может иметь любое значение, поэтому вы можете сделать что-то подобное.

var property = constraint.GetType().GetProperty("Parameter"); 

if (property != null) 
{ 
    var parameter = property.GetValue(constraint); 
    if (parameter != null) 
    { 
     var parameterName = parameter.GetType().GetProperty("Name").GetValue(parameter).ToString(); 
     if (parameterName == "Length") 
     { 
      property.SetValue(constraint, myLengthParameter); 
     } 
    }   
} 
1

Проверьте тип экземпляра, используя is, затем введите объект в тип Constraint. (см. комментарий J3soon)

if (myConstraint is Constraint) 
{ 
    // cast and perform your operations here 
} 
+0

Существует множество возможностей. Это не сработает. Я думаю, что использование Reflection должно помочь. См. Мои комментарии. – Saeid

 Смежные вопросы

  • Нет связанных вопросов^_^