У меня есть большая коллекция автоматически сгенерированных объектов. Хотя все они разные, не связанные классы, все объекты имеют общие свойства (имя, идентификатор и т. Д.). Я не управляю поколением этих объектов, поэтому, к сожалению, я не могу использовать идеальный подход к реализации интерфейса. Я хотел бы создать метод, в котором я передаю произвольный один из этих объектов и сделаю что-то, используя эти общие свойства.Метод обработки объектов со свойствами, общих для разных типов объектов
Общая идея будет что-то вроде:
someObj a = new someObj();
a.name = "sara";
diffObj b = new diffObj();
b.name = "joe";
string phrase = string.Format("I am with {0} and {1}",
getName(a), getName(b));
private string getName(object anyObjWithName)
{
return anyObjWithName.name;
}
хотя, конечно, это не работает.
Я думал, что общий метод может содержать ответ, но единственный способ увидеть его с текущим типом - использовать genericMethod.Invoke
, который по-прежнему несет ту же проблему, что и не в состоянии разрешить свойства переданного объекта в методе. Это не похоже на Calling generic method with a type argument known only at execution time или How to call generic method with a given Type object?, где в этом методе используются только тип или свойства этого типа, а не свойства объекта.
Я знаю, что это было бы (очень) подвержено ошибкам, но я могу гарантировать, что все обнаруженные объекты будут иметь общие свойства, которыми манипулируют.
Использовать интерфейс? – Michael
Попробуйте либо объявить интерфейс для связи объектов для общих свойств, либо использовать отражение. – Nayan
http://msdn.microsoft.com/en-us/library/64syzecx.aspx – Crisfole