2010-12-06 2 views
0

У меня есть следующий интерфейс:ошибка CS0738 Интерфейс реализация

общественного делегат недействительного NotifyOnModulesAvailabilityHandler (Ленивые [] модули);

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 

} 

Я получаю следующее сообщение об ошибке:

Error 1 'TunisiaMeeting.Extensibility.Shell.Helpers.Deployment.ModulesLoader' does not implement interface member 'TunisiaMeeting.MefBase.Interfaces.IModulesLoader.Modules'. 'TunisiaMeeting.Extensibility.Shell.Helpers.Deployment.ModulesLoader.Modules' cannot implement 'TunisiaMeeting.MefBase.Interfaces.IModulesLoader.Modules' because it does not have the matching return type of '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>[] как в моем классе, так и в моем интерфейсе для моей собственности.

Любая помощь, пожалуйста?

Спасибо всем

ответ

1

Вы не показали, где UserControl и IModuleMetadata приходят из ... я думаю, что ваш интерфейс имеет в виду одну пару типов, тогда как ваша реализация ссылающихся на другой паре:

  • Убедитесь, что они имеете в виду те же типы в одних и тех же пространствах имен
  • Убедитесь, что только один экземпляр каждого типа (например, что вы не получили один экземпляр в библиотеке классов, и это где-то повторно объявлен else)
+0

Спасибо за ответ, – Imed 2010-12-06 11:58:26

Смежные вопросы