У меня есть решение с рядом проектов. Речь идет о библиотеке классов API, библиотеке классов CustomTriggers и веб-сайте. И CustomTriggers, и API ссылок на веб-сайт. CustomTriggers реализует интерфейс ITrigger, расположенный в API.
Проблема в том, что если я в методе "Run" интерфейса ITrigger определяет один параметр, все работает нормально, но если я определяю два параметра, "метод" Run "в типе" 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) {
}
}
Метод [заглушка], который [не] исключает исключение:
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.
У меня все идеи. Маленькая помощь?