13

私は多くのプロジェクトで解決策を持っています。質問に関連するのは、API クラス ライブラリ、CustomTriggers クラス ライブラリ、および Web サイトです。CustomTriggers と Web サイトの両方が API を参照します。CustomTriggers は、API にある Interface ITrigger を実装します。

問題は、インターフェイス ITrigger の 'Run' メソッドで 1 つのパラメーターを定義すると問題なく動作することですが、2 つのパラメーターを定義すると、アセンブリからの Type 'CustomTriggers.*' の「メソッド 'Run'」 * には実装がありません。 ' 例外がスローされます。理由がわかりません。

インターフェース:

namespace projectbase{
public interface ITrigger {
    string EntityTypeName { get; set; }
    int EntityID { get; set; }
    API.API.TriggerEventType TriggerEventType { get; set; }
    void Run(KeyValuePair<string, object>[] parameters);
}  }

ITrigger を実装する「CustomTriggers」プロジェクトのクラス:

public class SomeTrigger : projectbase.ITrigger {
    public string EntityTypeName { get; set; }
    public int EntityID { get; set; }
    public API.API.TriggerEventType TriggerEventType { get; set; }
    public void Run(KeyValuePair<string, object>[] parameters) {
    }
}

例外をスロー [しない] メソッド [スタブ]:

string file = @"dir\CustomTriggers.dll";
string assemblyname = AssemblyName.GetAssemblyName(file).ToString();
Assembly ass = Assembly.Load(assemblyname);
Type assType = null; // funny! :-)

if (ass != null)
    assType = ass.GetType("CustomTriggers.SomeTrigger", false); //throws exception here :-(
if (assType != null) {
    foreach (Type t in assType.GetInterfaces()) {
        if (t.Name == "ITrigger") {
            blnValidTypeFound = true;
            break;
        }
    }
} // if

したがって...このコードは準拠しており、問題なく実行されます。心配はありません。

しかし、「ITrigger」と「SomeTrigger」の両方の「Run」メソッドに別のパラメーターを追加すると、

void Run(KeyValuePair<string, object>[] parameters, string OtherParameter);

public void Run(KeyValuePair<string, object>[] parameters, string OtherParameter) {}

コメントで示された行で例外をスローします。

Method 'Run' in type 'CustomTriggers.SomeTrigger' from assembly 'CustomTriggers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.

私はすべてのアイデアがありません。少し助けて?

4

0 に答える 0