2015-12-01 2 views
0

Я создаю динамический класс и с помощью отражения для присвоения значений свойств, класс имеет два свойстваНе удалось установить свойство с помощью отражения

public int Tipo_Pension {set;get;} 
public bool Novedad_TDP {set;get;} 

И я использую следующий код для установки значения. VariableName - это имя свойства и значение действительного значения свойства для установки, а ruleMeta.Evaluator - связующее.

private void SetVariable(string VariableName, object Value, RuleMeta ruleMeta) 
{ 
    o = ruleMeta.EvaluatorType.InvokeMember(
     VariableName, 
     BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, 
     Type.DefaultBinder, 
     ruleMeta.Evaluator, 
     new object[] { Value } 
    ); 
} 

Кулак собственности, Integer, работает отлично, но когда его казнили за булевой он терпит неудачу и бросает следующую ошибку

Method 'Cenet.RulesManager.Rule360788846.Novedad_TDP' not found 

Любая идея, что могло случиться?

Примечание: объект Значение для Boolean поставляется в виде строки: «ложной»

+0

Попробуйте использовать 'set_Novedad_TDP' в качестве имени метода. – cubrr

+0

Вы говорите, что вы создаете динамический класс, почему бы не '((dynamic) ruleMeta) .Novedad_TDP = Value' внутри метода вместо использования отражения? Предположим, что вы сначала разбираете 'Value' в' bool'. –

+0

Это потому, что вы передаете строку. вы должны передать значение bool. используйте Convert.ToBoolean. –

ответ

0

Как M.kazem Akhgary писал я настройка BOOL со строкой, просто, как это.

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