我有以下代码行似乎什么都不做,没有错误,什么也没做。该对象不在容器的目录中:
public void Initialize()
{
if (AuthenticationModel.Current.Protocol.ToString() != GetType().Name.Replace(UnitTypeSuffix, ""))
{
return;
}
_container.ComposeExportedValue<ILoginView>(new LoginView());
}
if
检查是因为我可能有多个登录模块,只有Protocol
指定的模块必须使其在容器中可用。然后其他动态加载的模块可以只询问当前注册的登录视图。检查通过并ComposeExportedValue
执行,但该对象在容器中不可见。
答案 0 :(得分:0)
如果您执行此类操作,您将看到它在编写测试对象时确实使用了您的登录视图:
public class Test
{
[Import]
public ILoginView LoginView { get; set; }
}
var test = new Test();
container.ComposeExportedValue<ILoginView>(new LoginView());
container.SatisfyImportsOnce(test);
文档不是很详细,但我认为它不会被添加到容器中,因为您创建了对象,并保留了它的所有权。当容器处理等时,它不会被处理掉。
如果您希望它成为容器的一部分,则必须使用[Export]属性并将包含视图的程序集添加到目录中。或者,如果您不想使用属性,则可以使用新的RegistrationBuilder。