리플렉션을 사용하여 모든 .net 라이브러리에서 메서드 호출
저자:Eve Cole
업데이트 시간:2009-07-01 15:48:58
기능은 다음과 같으며, 댓글과 함께 직접 확인해주세요 :)
메모:
1. ReturnMessage는 제가 직접 작성한 클래스입니다. 이 클래스도 뒷부분에 첨부했습니다.
2. NameSpaceAndClassName 및 MethodName을 통해 실제로 메서드를 정확하게 찾을 수 있습니다. 예를 들어 abc.dll에서 네임스페이스1.Class1.Main을 호출하면 호출은 CallAssembly("abc.dll","namespace1.Class1","Main"입니다. ,널 )
공개 정적 ReturnMessage CallAssembly(문자열 Path,string NameSpaceAndClassName,string MethodName,object[] 매개변수)
{
노력하다
{
Assembly Ass=Assembly.LoadFrom(Path);//파일 로드(dll에 국한되지 않고 .net이면 exe도 사용할 수 있음)
TP=Ass.GetType(NameSpaceAndClassName);//NameSpaceAndClassName은 "namespace1.Class1"과 같이 "namespace.classname"입니다.
MethodInfo MI=TP.GetMethod(MethodName);//MethodName은 "Main"과 같이 호출할 메서드 이름입니다.
개체 MeObj=System.Activator.CreateInstance(TP);
MI.Invoke(MeObj,Parameters);//Parameters는 대상 메서드를 호출할 때 전달되는 매개변수 목록입니다.
return new ReturnMessage(true,"성공적으로 호출되었습니다",1);
}
잡기(예외e)
{
return new ReturnMessage(false,"예외가 발생했습니다. 메시지는 "+e.Message,-1,e);
}
}
반품 메시지가 첨부되었습니다.
공개 클래스 ReturnMessage
{
공개 반환 메시지()
{
this.m_Succeed=false;
this.m_Message="";
this.m_Code=-1000;
this.m_Data=null;
}
공개 ReturnMessage(bool IsSucceed)
{
this.m_Succeed=Is성공;
}
공개 ReturnMessage(bool IsSucceed,문자열 메시지)
{
this.m_Succeed=Is성공;
this.m_Message=메시지;
}
공개 ReturnMessage(bool IsSucceed,문자열 메시지,int 코드)
{
this.m_Succeed=Is성공;
this.m_Message=메시지;
this.m_Code=코드;
}
공개 ReturnMessage(bool IsSucceed,문자열 메시지,int 코드,객체 데이터)
{
this.m_Succeed=Is성공;
this.m_Message=메시지;
this.m_Code=코드;
this.m_Data=데이터;
}
공개 ReturnMessage(bool IsSucceed,string 메시지,int 코드,객체 데이터,object[] 데이터)
{
this.m_Succeed=Is성공;
this.m_Message=메시지;
this.m_Code=코드;
this.m_Data=데이터;
this.m_Datas=데이터;
}
//
bool m_Succeed;
문자열 m_Message;
int m_Code;
객체 m_Data;
객체[] m_Datas;
공개 bool 성공
{
get{return m_Succeed;}
설정{m_Succeed=값;}
}
공개 문자열 메시지
{
get{return m_Message;}
설정{m_Message=값;}
}
공개 정수 코드
{
get{return m_Code;}
설정{m_Code=값;}
}
공공 객체 데이터
{
get{return m_Data;}
설정{m_Data=값;}
}
공개 객체[] 데이터
{
get{return m_Datas;}
설정{m_Datas=값;}
}
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475574.html