У меня есть три класса: SomeThing, SomeOtherThing и YetAntherThing. У всех трех есть идентичный член под названием Свойства. В каждом классе это пара ключ / значение, так что я могу ссылаться на obj1.Name, obj1.Value, obj2.Name, obj2.Value, obj3.Name и obj3.Value. Я хотел бы передать эти три объекта в один метод, который мог бы перебирать их соответствующие коллекции «Properties» без необходимости знать во время компиляции, над чем он работал. Я представляю что-то вроде:
SomeThing obj1;
SomeOtherThing obj2;
YetAntherThing obj3;
DoProperties( obj1, obj1.GetType() );
DoProperties( obj2, obj2.GetType() );
DoProperties( obj3, obj3.GetType() );
...
private void DoProperties( object obj, Type objectType )
{
// this is where I get lost. I want to "cast" 'obj' to the type
// held in 'objectType' so that I can do something like:
//
// foreach ( var prop in obj.Properties )
// {
// string name = prop.Name;
// string value = prop.Value;
// }
}
Примечание: классы SomeThing, SomeOtherThing и YetAntherThing определены внешне, я не имею над ними никакого контроля или доступа к их исходному коду, и все они запечатаны.