Я создаю динамический класс и с помощью отражения для присвоения значений свойств, класс имеет два свойстваНе удалось установить свойство с помощью отражения
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 поставляется в виде строки: «ложной»
Попробуйте использовать 'set_Novedad_TDP' в качестве имени метода. – cubrr
Вы говорите, что вы создаете динамический класс, почему бы не '((dynamic) ruleMeta) .Novedad_TDP = Value' внутри метода вместо использования отражения? Предположим, что вы сначала разбираете 'Value' в' bool'. –
Это потому, что вы передаете строку. вы должны передать значение bool. используйте Convert.ToBoolean. –