0

一連のデフォルトの StructureMap コンテナーをコーディングしたいのですが、カスタマイズが必要な場合は、それらを StructureMap xml 構成形式に書き込んで、再構成してロードできるようにします。

本質的に、私は探していcontainer.SaveConfigurationToXmlFile("someConfigFile.xml")ます。以下はコード例です。コンテナの構造は興味深い部分ではありません。

Container container = new Container(config=>
{
    SmartInstance<Person> travolta = config.For<IPerson>().Use<Person>()
        .Ctor<String>().Is("John Travolta");
    SmartInstance<Person> picard = config.For<IPerson>().Add<Person>()
        .Ctor<String>().Is("Captain Picard");
    SmartInstance<Person> ragen = config.For<IPerson>().Add<Person>()
        .Ctor<String>().Is("Ronald Ragen");
    SmartInstance<Person> obama = config.For<IPerson>().Add<Person>()
        .Ctor<String>().Is("Barak Obama");
    SmartInstance<Person> adams = config.For<IPerson>().Add<Person>()
        .Ctor<String>().Is("Brian Adams");

    SmartInstance<Driver> designatedDriver = config.For<IDriver>().Use<Driver>()
        .Ctor<IPerson>().Is(travolta);

    config.For<IVehicle>().Use<Car>().Named("CoolKidsCar")
        .Ctor<IDriver>().Is(designatedDriver)
        .Ctor<IPerson>("passengerSeat").Is(picard)
        .Ctor<IPerson>("leftBackSeat").Is(ragen)
        .Ctor<IPerson>("centerBackseat").Is(obama)
        .Ctor<IPerson>("rightBackseat").Is(adams)
        .Ctor<double>("topSpeed").Is(200);
});

string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "coolKidsContainer.xml");
container.SaveConfigurationToXmlFile(fileName); //Does not exist.
Container deserializedContainer = new Container(config => config.AddConfigurationFromXmlFile(fileName));

var defaultPerson = deserializedContainer.GetInstance<IPerson>();
var coolKidsCar = deserializedContainer.GetInstance<IVehicle>("CoolKidsCar");

これは StructureMap 内に存在しますか? たぶん、他のIoCコンテナがそれを行うことができますか? 同じ機能を得るために他に何ができますか?

4

0 に答える 0