Используйте отражение для вызова методов в любой библиотеке .net.
Автор:Eve Cole
Время обновления:2009-07-01 15:48:58
Функция следующая, с комментариями, проверьте сами :)
Примечание:
1. ReturnMessage — это класс, который я написал сам. Пожалуйста, ознакомьтесь с его функциями в других моих статьях. Я также прикрепил этот класс сзади.
2. С помощью NameSpaceAndClassName и MethodName вы действительно можете точно найти метод. Например, при вызове namespace1.Class1.Main в abc.dll вызывается CallAssembly("abc.dll","namespace1.Class1","Main". ,нулевой )
public static ReturnMessage CallAssembly (строка Path, строка NameSpaceAndClassName, строка Имя метода, параметры объекта [])
{
пытаться
{
Assembly Ass=Assembly.LoadFrom(Path);//Загрузить файл (не ограничиваясь dll, также можно использовать exe, если это .net)
Тип TP=Ass.GetType(NameSpaceAndClassName);//NameSpaceAndClassName — это «пространство имен.имя класса», например «пространство имен1.Класс1»
MethodInfo MI=TP.GetMethod(MethodName);//MethodName — это имя вызываемого метода, например «Main»
объект MeObj=System.Activator.CreateInstance(TP);
MI.Invoke(MeObj,Parameters);//Параметры — это список параметров, передаваемый при вызове целевого метода
вернуть новое ReturnMessage(true, «вызвано успешно», 1);
}
поймать (Исключение е)
{
return new ReturnMessage(false, «Произошло исключение, сообщение: «+e.Message,-1,e);
}
}
Прикрепленное сообщение возврата
публичный класс ReturnMessage
{
общедоступное сообщение возврата()
{
this.m_Succeed=false;
this.m_Message="";
this.m_Code=-1000;
this.m_Data = ноль;
}
публичное ReturnMessage (bool IsSucceed)
{
this.m_Succeed=IsSucceed;
}
public ReturnMessage (bool IsSucceed, строковое сообщение)
{
this.m_Succeed=IsSucceed;
this.m_Message=Сообщение;
}
public ReturnMessage (bool IsSucceed, строковое сообщение, int Code)
{
this.m_Succeed=IsSucceed;
this.m_Message=Сообщение;
this.m_Code=Код;
}
public ReturnMessage (bool IsSucceed, строковое сообщение, код int, данные объекта)
{
this.m_Succeed=IsSucceed;
this.m_Message=Сообщение;
this.m_Code=Код;
this.m_Data=Данные;
}
public ReturnMessage (bool IsSucceed, строковое сообщение, код int, данные объекта, данные объекта [])
{
this.m_Succeed=IsSucceed;
this.m_Message=Сообщение;
this.m_Code=Код;
this.m_Data=Данные;
this.m_Datas=Данные;
}
//
bool m_Succeed;
строка m_Message;
интервал m_Code;
объект m_Data;
объект [] m_Datas;
public bool Успех
{
получить {вернуть m_Succeed;}
установить {m_Succeed = значение;}
}
общедоступная строка Сообщение
{
получить {вернуть m_Message;}
установить {m_Message = значение;}
}
публичный int-код
{
получить {вернуть m_Code;}
установить {m_Code = значение;}
}
данные общедоступного объекта
{
получить {вернуть m_Data;}
установить {m_Data = значение;}
}
публичный объект[] Данные
{
получить {вернуть m_Datas;}
установить {m_Datas = значение;}
}
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475574.html