在WPF应用程序中使用Unity DI容器

时间:2015-04-30 19:53:31

标签: c# wpf unity-container

我是WPF的新手,并考虑尝试DI。我决定将OnStartup方法作为Composition Root。

  protected override void OnStartup(StartupEventArgs e)
    {      
        IUnityContainer container = new UnityContainer();
        container.RegisterType<IMailSender, Model.Concrete.GmailSender>();
        var mainWindow = container.Resolve<MainWindow>();
        mainWindow.Show();
    }

但是,在应用程序启动后,出现两个窗口,正常,带有我的内容,并且完全为空(似乎没有初始化)。有什么问题?

1 个答案:

答案 0 :(得分:3)

您需要删除App.XAML中的StartUri。此外,最好设置应用程序主窗口。请参阅下面的代码。

<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                  http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
    <entity name="Application\Sonata\UserBundle\Entity\User" table="fos user table name here">
        <id name="id" column="id" type="integer">
            <generator strategy="AUTO" />
        </id>
    </entity>
</doctrine-mapping>