2014-01-27 3 views
0

Я пытаюсь написать функцию-оболочку для приложения.Получение поля или объекта в основном на основе значения строки

Это приложение будет постоянно добавлять объекты, поэтому было бы лучше, если бы мы могли написать одну общую функцию, а не вырезать исключение для каждого элемента.

По некоторым причинам мы сохраняем как идентификатор GUID, так и ключ int.

Когда обновляется ключ int, мы должны обновить его как в родительской записи, так и дочерние записи, но поскольку возможно, что в любой момент времени может быть несколько дочерних записей с одним и тем же ключом int, нам нужно получить список Гидов того, что мы хотим обновить.

Вот какой-то код psuedo того, что я пытаюсь сделать.

List<string> depenedents = new List<string>(); 
depenedents.add(table1); 
depenedents.add(table2); 
depenedents.add(table3); 

for(item in depenedents) 
{ 
    context.set<type item>(); 
    entities.getguid(); 
} 

Очевидно, проблема здесь в цикле for.

Возможно ли получить список сущностей, зная только строку типа сущности? К счастью, все наши объекты привязаны к базовому классу, который имеет метод get guid, но мне нужно найти способ фактически получить объекты.

Любая помощь очень ценится.

ответ

0

Что-то вроде:

 for(item in depenedents) 
{ 
    context.GetMethod("Set") 
     .MakeGenericType(Type.GetType(item)) 
     .Invoke(context, new object[0]); 

    entities.GetType.GetMethod("GetGuid").Invoke(entities, new object[0]); 
} 

... должно быть с примерно то, что вам нужно. Это вызовет правильную специализацию типов метода Set generic instance. Затем он вызовет метод экземпляра, называемый GetGuid, для объекта объектов.

Или возможно:

foreach(var entity in entities) 
{ 
    entity.GetType.GetMethod("GetGuid").Invoke(entities, new object[0]); 
} 

Вы, возможно, хотите сделать что-то со значениями вернулись, но, надеюсь, этот ответ будет указывать вам в правильном направлении!

(и четко вы могли бы оптимизировать этот код существенно кэш отражение типов и методов, или использовать скомпилированные выражения, а не Invoke() вызовов)

+0

организаций должна быть действительно сущность формирования списка entitites, что я называю метод getguid на , – user3170736

+0

Таким образом, сущности являются «List ' где 'T' - это тип, имя которого' item'? –

+0

Это правильно. – user3170736

Смежные вопросы