// здесь я хотел бы получить доступ к свойствам типа 2 c, таким как Record.Info2, в общем случае c способ
Проблема в том, что если вы действительно универсальный c, вы не знаете, что это за свойства. По этому вопросу, мы тоже. Что вы хотите сделать эти данные? Кажется, ты не узнаешь этот ответ заранее.
Но есть и хорошие новости ... которые делают это идеальным вариантом использования для делегата!
public void TestFunc(Action<type1, type2> doSomething)
{
foreach(var item in myLookup)
{
var x = item.Key;
foreach(var subItem in item)
{
doSomething(x, subItem);
}
}
}
И теперь вы бы назвали его лямбдой, например:
var target = new TargetObject(lookup);
target.TestFunc((x, y) => {
// x is the key
// y is the subitem
// Whatever code you put here will run once for every subitem.
// And you will be able to use properties and methods of y.
// As a bonus, you also have access to variables in outer scope via closures.
});