У меня есть следующий интерфейс:
открытый делегат void NotifyOnModulesAvailabilityHandler (Lazy [] modules);
public interface IModulesLoader
{
event NotifyOnModulesAvailabilityHandler NotifyOnModulesAvailability;
Lazy<UserControl, IModuleMetadata>[] Modules { get; set; }
void OnImportsSatisfied();
}
Я пытаюсь реализовать этот интерфейс следующим образом:
public class ModulesLoader : IModulesLoader, IPartImportsSatisfiedNotification
{
#region Events
public event NotifyOnModulesAvailabilityHandler NotifyOnModulesAvailability;
#endregion
#region Public Contructor
public ModulesLoader()
{
DeploymentCatalogService.Instance.Initialize();
CompositionInitializer.SatisfyImports(this);
this.LoadModules();
}
#endregion
#region Properties
[ImportMany(AllowRecomposition = true)]
public Lazy<UserControl, IModuleMetadata>[] Modules
{
get;
set;
}
#endregion
#region IPartImportsSatisfiedNotification Members
public void OnImportsSatisfied()
{
var handler = this.NotifyOnModulesAvailability;
if (handler != null)
{
handler(this.Modules);
}
}
#endregion
#region Private Methods
private void LoadModules()
{
var wc = new WebClient();
wc.OpenReadCompleted += (s, e) =>
{
var streamInfo = e.Result;
var xElement = XElement.Load(streamInfo);
var modulesList = from m in xElement.Elements("ModuleInfo")
select m;
if (modulesList.Any())
{
foreach (var module in modulesList)
{
var moduleName = module.Attribute("XapFilename").Value;
DeploymentCatalogService.Instance.AddXap(moduleName);
}
}
};
wc.OpenReadAsync(new Uri("ModulesCatalog.xml", UriKind.Relative));
}
#endregion
}
Я получаю следующую ошибку:
Ошибка 1 «TunisiaMeeting.Extensibility.Shell.Helpers.Deployment.ModulesLoader» не реализует элемент интерфейса «TunisiaMeeting.MefBase.Interfaces.IModulesLoader.Modules». «TunisiaMeeting.Extensibility.Shell.Helpers.Deployment.ModulesLoader.Modules» не может реализовать «TunisiaMeeting.MefBase.Interfaces.IModulesLoader.Modules», поскольку у него нет соответствующего возвращаемого типа 'System.Lazy``2<System.Windows.Controls.UserControl,TunisiaMeeting.MefBase.Interfaces.IModuleMetadata>[]'
. C: \ Imed \ TunisiaMeeting \ TunisiaMeeting.Extensibility.Shell \ Helpers \ Deployment \ ModulesLoader.cs 18 18 TunisiaMeeting.Extensibility.Shell
Я почти уверен, что у меня одинаковый тип возвращаемого значения Lazy<UserControl, IModuleMetadata>[]
как в моем классе, так и в интерфейсе для моего свойства.
Любая помощь, пожалуйста?
Спасибо всем