您可能想查看 PRISM 源代码中的 RegionNavigationContentLoader.cs;这是为您加载视图的代码。
protected virtual object CreateNewRegionItem(string candidateTargetContract)
{
object newRegionItem;
try
{
newRegionItem = this.serviceLocator.GetInstance<object>(candidateTargetContract);
}
catch (ActivationException e)
{
throw new InvalidOperationException(
string.Format(CultureInfo.CurrentCulture, Resources.CannotCreateNavigationTarget, candidateTargetContract),
e);
}
return newRegionItem;
}
有几个辅助方法可以获取 URI,提取查询字符串,并创建用于查找视图并将其转换为对象的“名称”。
本质上,您用于将具体类作为对象与 Unity 相关联的名称与您尝试使用 Unity 解析对象时需要使用的名称相同。这是一些要解释的伪代码,
Container.RegisterType<object, ConcreteClass>(typeof(ConcreteClass).FullName);
Locator.GetInstance<object>(UriWithFullName)
如果这些都没有帮助,请发布 RelativeUriToMyView 以便我可以查看内容。祝你好运。