У меня есть два объекта, и я хочу объединить их:
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 #, поэтому я не совсем уверен во всех доступных мне опциях.
Спасибо за предоставленные варианты.
EDIT
Это строго для добавления метаинформации к типу, предоставленному мне для сериализации. Этот сценарий хранит объекты пользователя в неведении о метаинформации, которая должна быть добавлена до ее сериализации. Прежде чем задавать этот вопрос, я предложил два варианта, и я просто хотел посмотреть, есть ли еще, прежде чем решить, какой из них использовать.
Я предложил два варианта:
Управление сериализованной строкой типа, данного мне после сериализации, путем добавления метаинформации.
Завершение типа, данного мне, что похоже на то, что упоминал @Zxpro, но мой немного отличался, что нормально. Это просто заставит пользователя моего API следовать соглашению, что не так уж и плохо, так как все о соглашении по конфигурации:
public class Foo<T>
{
public string Name { get; set; }
public T Content { get; set; }
}
EDIT
Спасибо всем за ответы. Я решил обернуть объект, как указано выше, и дал ответ @Zxpro, поскольку большинству тоже понравился этот подход.
Если кто-то еще сталкивается с этим вопросом, не стесняйтесь писать, если вы думаете, что может быть лучший способ.