У меня есть куча моделей, которые могут иметь или не иметь свойство "CommonProperty". Я хочу установить это свойство при создании нового объекта выбранной модели. То, что я до сих пор работаю:
ModuleItem model = db.ModuleItems.Find(ModuleItemID);
object o = GetModuleType(model.ControllerName);
private object GetModuleType(string ModelName)
{
string projectName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
Type classtype = Type.GetType(string.Format("{0}.Models.{1}", projectName, ModelName));
PropertyInfo[] properties = classtype.GetProperties();
var classObject = classtype.GetConstructor(new Type[] { }).Invoke(null);
return classObject;
}
Чего я хочу добиться, так это установить CommonProperty:
o.CommonProperty = DistinctValue;
Я попытался создать класс, от которого все мои модели наследуются виртуальным методом, и у каждой модели есть метод переопределения. Поскольку он не статичен, я не могу вызвать его напрямую, и если я создаю новый ModelBase, то при вызове метода он не переопределяется типом объекта "o". Я смотрел на создание интерфейса, но 1 я даже не знаю, как это работает, и 2 (вероятно, из-за 1) я даже не могу создать способ сделать это без ошибок сборки.
При переходе по коду я вижу все свойства «o», используя быструю кнопку или intellisense или как там это называется. Ясно, что он распознается как правильный тип. Кажется, я не могу вызвать метод, потому что он не является распознанным (или установленным) типом во время сборки только во время выполнения и, следовательно, я не могу построить решение.