2010-11-23 3 views
0

デスクトップアプリケーションで、インターフェイスクラスの関数を使用する際に問題が発生しています。C#のインターフェイスクラス

私はプラグインを実行するため、このような機能を持っているIMFDBAnalyserPluginクラスはインターフェースであり、この

using System; 
using System.Collections.Generic; 

using System.Linq; 
using System.Text; 

namespace MFDBAnalyser 
{ 
    public class IMFDBAnalyserPlugin 
    { 
     void ExecutePlugin(); 
    } 
} 

のような私はMFDBAnalyserのエラーを取得していたプロジェクトをビルド上のコードが含まれています

public static string ExecutePugin(string PluginName, string ConnectionString) 
{ 
    //ToDo: Get the plugin dll in the memory in a different appdomain. call RunAnalysis method of that 
    //ToDo: shift the primary key checking method to inside the plugin and return the result back. 

    //Loads the IMFDBAnalyserPlugin.exe to the current application domain. 
    AppDomain.CurrentDomain.Load("IMFDBAnalyserPlugin"); 

    // Load the plugin's assembly to the current application doamin. 
    Assembly oAssembly = AppDomain.CurrentDomain.Load(PluginName); 

    // This block of code will execute the plugin's assembly code. 
    foreach (Type oType in oAssembly.GetTypes()) 
    { 
     if (oType.GetInterface("IMFDBAnalyserPlugin") != null) 
     { 
      object oPlugin = Activator.CreateInstance(oType, null, null); 
      ((MFDBAnalyser.IMFDBAnalyserPlugin)oPlugin).ExecutePlugin(); 
     } 
    } 
    return string.Empty; 
} 

.IMFDBAnalyserPlugin as

エラー1タイプ名 'IMFDBAnalyserPlugin'は型 'MFDBAnalyser.MFDBAnalyser' D内に存在する:プロジェクト\ Mindfire \ GoalPlan \ MFDBAnalyser \ MFDBAnalyser \ PluginManager.cs \ 57 107 MFDBAnalyser

誰かが私にあなたがusingsでMFDBAnalyser含めています

+0

C#には 'interface class'はなく、' interface'や 'class'だけがあります。私は 'IMFDBAnalyserPlugin'インターフェースであるべきだと思います。さもなければ、それはコンパイルされません。 –

+0

...ちょうど参考までに、それはインターフェイスではありません... –

+0

'IMFDBAnalyserPlugin'は、' abstract'または 'interface'としてマークする必要があるためコンパイルされません - 同じプロジェクトの' MFDBAnalyser'ですあなたの 'PluginManager'?そうでなければ 'MFDBAnalyser'を含むアセンブリが最新であることを確かめますか? – Justin

答えて

1
namespace MFDBAnalyser 
{ 
    interface IMFDBAnalyserPlugin 
    { 
     void ExecutePlugin(); 
    } 
} 

を見てくださいそれ以外の場合はこのようなインターフェイスが存在しないため、は常にnullになります。

2

を助けることができますメインクラス?

PluginManager

using MFDBAnalyser; 

ような何か?

また、

あなたは

public interface IMFDBAnalyserPlugin 
{ 
    void ExecutePlugin(); 
} 

public class IMFDBAnalyserPlugin 
{ 
    void ExecutePlugin(); 
} 

を変更する必要がありますがinterface (C# Reference)

+0

はい私はそれをやっています – Srivastava

関連する問題