Значение, хранящееся в paraObj[0]
, имеет тип RuntimeParameterInfo
, тогда как конструктор для EqualsExpression
ожидает объект типа PropertyExpression
.Вы должны убедиться, что типы объектов в paraObj
могут быть связаны с подходящим конструктором для Activator, чтобы иметь возможность создавать новый объект.
Для решения вашей проблемы вам нужно создать экземпляр PropertyExpression
и используйте это как первый элемент в вашем массиве paraObj
:
string assembly = "Ektron.Cms.ObjectFactory.dll";
string asspath = path + "bin\\" + assembly;
Assembly run_obj = Assembly.LoadFrom(@asspath);
PropertyInfo propertyInfo = run_obj.GetType("Ektron.Cms.Search.SearchContentProperty", true, true).GetProperty("Language");
PropertyExpression propertyExpression = new PropertyExpression(propertyInfo); // create the property expression here, I am unsure how to instantiate it.
paraObj[0] = propertyExpression;
paraObj[1] = longValue;
string equalExp = "Ektron.Cms.Search.Expressions.EqualsExpression";
Type objclass = run_obj.GetType(equalExp, true, true);
object objObj = Activator.CreateInstance(objclass, paraObj);