Я использую Prism 4 с расширениями MEF и шаблоном MVVM. Во время инициализации в модуле я вызываю RegisterViewWithRegion (RegionNames.MyRegion, typeof (MyView)), который отлично работает, когда представление построено следующим образом:
[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class MyView : UserControl
{
public MyView()
{
....
Представление регистрируется, и все в порядке. Как только я изменяю экспорт на пользовательский атрибут экспорта, представление больше не может быть найдено, хотя оно все еще находится в контейнере. Этот настраиваемый атрибут экспорта взят из Stock Trader 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 , ключ ""
Какие-нибудь советы? Я просматривал эту часть кода целый день, но не нашел решения.