我正在使用带有MEF扩展和MVVM模式的Prism 4。在模块的初始化期间,我调用RegisterViewWithRegion(RegionNames.MyRegion,typeof(MyView)), 当视图构造如下时,它可以完美地工作:
[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class MyView : UserControl
{
public MyView()
{
....
视图被注册后一切正常。但是,只要我将Export更改为自定义导出属性,即使它仍然在容器中,视图也无法找到。这个自定义导出属性来自股票交易RI:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
[MetadataAttribute]
public class ViewExportAttribute : ExportAttribute, IViewRegionRegistration
{
public ViewExportAttribute()
: base(typeof(object))
{ }
public ViewExportAttribute(string viewName)
: base(viewName, typeof(object))
{
ViewName = viewName;
}
public string RegionName { get; set; }
public string ViewName { get; set; }
}
接口是
public interface IViewRegionRegistration
{
string RegionName { get; }
string ViewName { get; }
}
通过将导出属性更改为
[ViewExport(ViewName = "MyView", RegionName = RegionNames.MyRegion)]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class MyView : UserControl
{
public MyView()
{
....
当调用RegisterViewWithRegion时,它会抛出一个错误:在尝试获取类型为MyView,键为""的实例时发生激活错误。
有什么建议吗?我整天都在看这段代码,但没有找到解决方案。