Gunakan refleksi untuk memanggil metode di perpustakaan .net mana pun
Penulis:Eve Cole
Waktu Pembaruan:2009-07-01 15:48:58
Fungsinya sebagai berikut, beserta komentarnya, silakan dicek sendiri :)
Catatan:
1. ReturnMessage adalah kelas yang saya tulis sendiri. Silakan periksa artikel saya yang lain untuk mengetahui fungsinya.
2. Melalui NameSpaceAndClassName dan MethodName, Anda sebenarnya dapat menemukan metode secara akurat. Misalnya, saat memanggil namespace1.Class1.Main di abc.dll, panggilannya adalah CallAssembly("abc.dll","namespace1.Class1","Main" ,batal )
CallAssembly ReturnMessage statis publik (Jalur string, String NameSpaceAndClassName, string MethodName, objek [] Parameter)
{
mencoba
{
Majelis Ass=Assembly.LoadFrom(Path);//Muat file (tidak terbatas pada dll, exe juga bisa digunakan, asalkan .net)
Ketik TP=Ass.GetType(NameSpaceAndClassName);//NameSpaceAndClassName adalah "namespace.classname", misalnya "namespace1.Class1"
MethodInfo MI=TP.GetMethod(MethodName);//MethodName adalah nama metode yang akan dipanggil, seperti "Utama"
objek MeObj=Sistem.Activator.CreateInstance(TP);
MI.Invoke(MeObj,Parameters);//Parameters adalah daftar parameter yang diteruskan saat memanggil metode target
return new ReturnMessage(true,"berhasil dipanggil",1);
}
menangkap (Pengecualian e)
{
return new ReturnMessage(false,"Terjadi pengecualian, pesannya adalah: "+e.Message,-1,e);
}
}
Pesan Pengembalian Terlampir
ReturnMessage kelas publik
{
Pesan Pengembalian publik()
{
this.m_Succeed=false;
ini.m_Pesan="";
ini.m_Code=-1000;
this.m_Data=null;
}
Pesan Pengembalian publik (bool IsSucceed)
{
this.m_Succeed=Berhasil;
}
Pesan Pengembalian publik (bool IsSucceed, Pesan string)
{
this.m_Succeed=Berhasil;
this.m_Message=Pesan;
}
Pesan Pengembalian publik (bool IsSucceed, Pesan string, Kode int)
{
this.m_Succeed=Berhasil;
this.m_Message=Pesan;
this.m_Code=Kode;
}
Pesan Pengembalian publik (bool IsSucceed, Pesan string, Kode int, Data objek)
{
this.m_Succeed=Berhasil;
this.m_Message=Pesan;
this.m_Code=Kode;
this.m_Data=Data;
}
Pesan Pengembalian publik (bool IsSucceed, Pesan string, Kode int, Data objek, objek [] Data)
{
this.m_Succeed=Berhasil;
this.m_Message=Pesan;
this.m_Code=Kode;
this.m_Data=Data;
this.m_Datas=Data;
}
//
bool m_Sukses;
string m_Pesan;
int m_Kode;
objek m_Data;
objek[] m_Data;
bool publik Berhasil
{
dapatkan{kembalikan m_Berhasil;}
set{m_Sukses=nilai;}
}
Pesan string publik
{
dapatkan{kembalikan m_Message;}
set{m_Message=nilai;}
}
Kode int publik
{
dapatkan{kembalikan m_Code;}
set{m_Code=nilai;}
}
Data objek publik
{
dapatkan{kembalikan m_Data;}
set{m_Data=nilai;}
}
objek publik[] Data
{
dapatkan{kembalikan m_Datas;}
set{m_Datas=nilai;}
}
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475574.html