Ошибка 1 Не удается создать экземпляр абстрактного интерфейса - C # - PullRequest
0 голосов
/ 24 июля 2011

хорошо, я знаю, что это значит, но я не знаю, как это решить вот мой интерфейс

        public interface nsIDownloadProgressListener
        {
            nsIDOMDocument getDocument();

            void setDocument(nsIDOMDocument doc);

            void OnDownloadStateChange(short state, nsIDownload aDownload);

            void OnStateChange(nsIWebProgress aWebProgress, nsIRequest aRequest, uint                                    
            aStateFlags, object aStatus, nsIDownload aDownload);

            void OnProgressChange(nsIWebProgress WbProgress, nsIRequest aReq, int         
            curSelfProgress, int maxSelfProgress, int curTotalProgress, int 
            maxTotalProgress, nsIDownload aDownload);

            void OnSecurityChange(nsIWebProgress wbProgress, nsIRequest aReq, uint 
            aState, nsIDownload aDownload);
            }

вот класс, который я использую для наследования интерфейса

          public class DownloadProgressListenerClass : nsIDownloadProgressListener
          {
              #region nsIDownloadProgressListener Members

              nsIDOMDocument Nothingreturned;

              public nsIDOMDocument getDocument()
              {
                  return Nothingreturned;
              }

              public void setDocument(nsIDOMDocument doc)
              {
              }

              public void OnDownloadStateChange(short state, nsIDownload aDownload)
              {
                  MessageBox.Show(aDownload.getId().ToString());
                  OnDownloadStateChange(state, aDownload);
              }

              public void OnStateChange(nsIWebProgress aWebProgress, nsIRequest aRequest, uint aStateFlags, object aStatus, nsIDownload aDownload)
              {
                  MessageBox.Show(aDownload.getId().ToString());

              }

              public void OnProgressChange(nsIWebProgress WbProgress, nsIRequest aReq, int curSelfProgress, int maxSelfProgress, int curTotalProgress, int maxTotalProgress, nsIDownload aDownload)
              {
                  MessageBox.Show(aDownload.getId().ToString());

              }

              public void OnSecurityChange(nsIWebProgress wbProgress, nsIRequest aReq, uint aState, nsIDownload aDownload)
              {
                  MessageBox.Show(aDownload.getId().ToString());

              }

              #endregion nsIDownloadProgressListener Members
          }


и затем я пытаюсь добавить слушателя в DLManager, который должен работать и сообщать о прогрессе

            DownloadProgressListenerClass DLListener = new DownloadProgressListenerClass();
            DLManager = Xpcom.GetService<nsIDownloadManager>("@mozilla.org/download-manager;1");
            DLManager.addListner(DLListener);

что-то не так с ним, потому что он правильно компилируется, но когда я пытаюсь загрузить файл, он ничего не запускает и не показывает окно сообщения, как это должно было

1 Ответ

0 голосов
/ 24 июля 2011

Я подозреваю, что ваш метод addListener ожидает тип интерфейса
nsIDownloadProgressListener в строке кода:
DLManager.addListner(DLListener);
Если это так, измените
DownloadProgressListenerClass DLListener = new DownloadProgressListenerClass();
на
nsIDownloadProgressListener DLListener = new DownloadProgressListenerClass();
. Если вам нужны пояснения, дайте мне знать.

...