vol*_*ure 13 c# reflection interface-implementation
我有一个包含许多项目的解决方案.与此问题相关的是API类库,CustomTriggers类库和网站.CustomTriggers和网站都引用了API.CustomTriggers实现位于API中的Interface ITrigger.
问题是,如果我在接口ITrigger的'Run'方法中定义了一个参数可以正常工作,但是如果我定义了两个参数,那么来自程序集*的Type'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);
} }
Run Code Online (Sandbox Code Playgroud)
实现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) {
}
}
Run Code Online (Sandbox Code Playgroud)
[不]抛出异常的方法[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
Run Code Online (Sandbox Code Playgroud)
所以...这段代码符合并运行得很好.不用担心.
但是当我在'ITrigger'和'SomeTrigger'的'Run'方法中添加另一个参数时
void Run(KeyValuePair<string, object>[] parameters, string OtherParameter);
public void Run(KeyValuePair<string, object>[] parameters, string OtherParameter) {}
Run Code Online (Sandbox Code Playgroud)
它在注释所指示的行中引发异常:
Method 'Run' in type 'CustomTriggers.SomeTrigger' from assembly 'CustomTriggers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
Run Code Online (Sandbox Code Playgroud)
我完全没有想法.帮助不大?
| 归档时间: |
|
| 查看次数: |
15420 次 |
| 最近记录: |