Estoy usando Prism 4 con extensiones MEF y el patrón MVVM. Durante la inicialización en un módulo que llamo RegisterViewWithRegion (RegionNames.MyRegion, typeof (MyView)), que funciona perfectamente cuando la vista se construye así:PRISM 4 - RegisterViewWithRegion y atributos de exportación personalizados
[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class MyView : UserControl
{
public MyView()
{
....
La vista obtiene registrado y todo está bien. Tan pronto como cambio la exportación a un atributo de exportación personalizado, la vista ya no se puede encontrar, aunque todavía está en el contenedor. Este atributo de exportación personalizada se toma del comerciante común 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; }
}
y la interfaz es
public interface IViewRegionRegistration
{
string RegionName { get; }
string ViewName { get; }
}
Cambiando la exportación de atributos a
[ViewExport(ViewName = "MyView", RegionName = RegionNames.MyRegion)]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class MyView : UserControl
{
public MyView()
{
....
al llamar RegisterViewWithRegion que arroja un error : Se produjo un error de activación al intentar obtener una instancia de tipo MyView, clave ""
¿Algún consejo? Estuve mirando esta parte del código todo el día sin encontrar una solución.
Más tarde esa noche ... Finalmente descubrí que tiene algo que ver con esta parte en el atributo Custom Export Attribute: ** (typeof (object)) ** - pero aún no se sabe cómo resolver el RegisterViewWithRegion problema ... – okieh