Каков наилучший способ объединения двух объектов во время выполнения с использованием C #?
У меня есть два объекта, и я хочу объединить их:
public class Foo
{
public string Name { get; set; }
}
public class Bar
{
public Guid Id { get; set; }
public string Property1 { get; set; }
public string Property2 { get; set; }
public string Property3 { get; set; }
public string Property4 { get; set; }
}
Создавать:
public class FooBar
{
public string Name { get; set; }
public Guid Id { get; set; }
public string Property1 { get; set; }
public string Property2 { get; set; }
public string Property3 { get; set; }
public string Property4 { get; set; }
}
Я буду знать структуру Foo только во время выполнения. Бар может быть любого типа во время выполнения. Я хотел бы иметь метод, который будет задан тип, и он объединяет этот тип с Foo. Например, в приведенном выше сценарии метод получил тип Bar во время выполнения, и я объединил его с Foo.
Каков был бы лучший способ сделать это? Это можно сделать с помощью выражений LINQ или мне нужно генерировать его динамически или есть другой способ? Я все еще изучаю новое пространство имен LINQ в C # 3.0, поэтому извините за невежество, если это возможно 'это может быть сделано с помощью выражений LINQ. Это также первый раз, когда мне приходилось делать что-то динамическое с C #, поэтому я не совсем уверен во всех доступных мне опциях.
Спасибо за любые варианты.
РЕДАКТИРОВАТЬ
Это строго для добавления мета-информации к типу, предоставленному мне для сериализации. Этот сценарий держит пользователяs объекты не знают метаинформации, которая должна быть добавлена до ее сериализации. Я предложил два варианта, прежде чем задавать этот вопрос, и я просто хотел посмотреть, есть ли еще, прежде чем решить, какой из них использовать.
Я выбрал два варианта:
Манипулирование сериализованной строкой типа, данного мне после сериализации, путем добавления метаинформации.
Оборачивая данный мне тип, который похож на то, что упоминал @Zxpro, но мой немного отличался, что нормально. Это просто заставит пользователя моего API следовать соглашению, которое неЭто плохо, так как все о соглашении по конфигурации:
public class Foo
{
public string Name { get; set; }
public T Content { get; set; }
}
РЕДАКТИРОВАТЬ
Спасибо всем за ответы. Я решил обернуть объект, как указано выше, и дал ответ @Zxpro, так как большинству тоже понравился этот подход.
Если кто-то еще сталкивается с этим вопросом, не стесняйтесь писать, если вы думаете, что может быть лучший способ.