У меня есть приложение .NET, которое имеет пользовательскую конфигурацию для восстановления некоторых классов при запуске. Это не простая (де) сериализация, она более сложная и смешанная.
class FooElement : ConfigurationElement
{
static ConfigurationProperty propValue = new ConfigurationProperty("value", typeof(int));
static ConfigurationProperty propType = new ConfigurationProperty("type", typeof(string));
[ConfigurationProperty("value")]
public int Value
{
get { return (int)this[propValue] }
set { this[propValue] = value }
}
[ConfigurationProperty("type")]
public string Type
{
get { return (int)this[propType] }
set { this[propType] = value }
}
}
class Foo : IFoo
{
public int Value { get; set;
public string Type { get; set; }
}
Некоторые из элементов конфигурации повторяют объекты приложения по свойствам, но я не хочу использовать элементы в своем приложении, я создал легкие объекты для этой цели. Вероятно, я могу назвать их POCO.
В настоящее время у меня есть следующее: Config:
<elements>
<add type="MyProj.Foo, MyProj" value="10" />
</elements>
Код:
elements.Select(e => (IFoo)Activator.CreateInstance(e.Type, e));
public Foo(FooElement element)
{
this.Value = element.Value;
}
Как лучше это сделать? Может быть, используя IoC или что-то подобное.