13

我有一个包含多个项目的解决方案。与该问题相关的是 API 类库、CustomTriggers 类库和网站。CustomTriggers 和网站都引用 API。CustomTriggers 实现位于 API 中的接口 ITrigger。

问题是,如果我在接口 ITrigger 的“运行”方法中定义了一个参数,则一切正常,但是如果我定义了两个参数,则程序集中的“CustomTriggers.*”类型中的“方法“运行”*没有实现' 抛出异常。我不明白为什么。

界面:

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);
}  }

'CustomTriggers' 项目中实现 ITrigger 的类:

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) {
    }
}

[不] 抛出异常的方法 [stub]:

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”的“运行”方法添加另一个参数时

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