استخدم الانعكاس لاستدعاء الأساليب في أي مكتبة .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". ،باطل )
ReturnMessage CallAssembly الثابت العام (مسار السلسلة، سلسلة NameSpaceAndClassName، سلسلة MethodName، كائن [] معلمات)
{
يحاول
{
Assembly Ass=Assembly.LoadFrom(Path);// قم بتحميل الملف (لا يقتصر على dll، ويمكن أيضًا استخدام exe، طالما أنه .net)
اكتب TP=Ass.GetType(NameSpaceAndClassName);//NameSpaceAndClassName هو "namespace.classname"، مثل "namespace1.Class1"
MethodInfo MI=TP.GetMethod(MethodName);//MethodName هو اسم الطريقة المراد استدعاؤها، مثل "Main"
Object MeObj=System.Activator.CreateInstance(TP);
MI.Invoc(MeObj,Parameters);// المعلمات هي قائمة المعلمات التي تم تمريرها عند استدعاء الطريقة المستهدفة
إرجاع رسالة ReturnMessage جديدة (صحيح، "تم الاتصال بنجاح"، 1)؛
}
قبض (استثناء ه)
{
return new ReturnMessage(false,"حدث استثناء، الرسالة هي:"+e.Message,-1,e);
}
}
رسالة الإرجاع المرفقة
رسالة إرجاع الطبقة العامة
{
رسالة الإرجاع العامة ()
{
this.m_Succeed=false;
this.m_Message = "";
this.m_Code=-1000;
this.m_Data=null;
}
رسالة الإرجاع العامة (المنطق ناجح)
{
this.m_Succeed=IsSucceed;
}
رسالة الإرجاع العامة (Bool IsSucceed، رسالة سلسلة)
{
this.m_Succeed=IsSucceed;
this.m_Message=Message;
}
رسالة الإرجاع العامة (Bool IsSucceed، رسالة سلسلة، رمز int)
{
this.m_Succeed=IsSucceed;
this.m_Message=Message;
this.m_Code=Code;
}
رسالة الإرجاع العامة (bool IsSucceed، رسالة سلسلة، رمز int، بيانات الكائن)
{
this.m_Succeed=IsSucceed;
this.m_Message=Message;
this.m_Code=Code;
this.m_Data=Data;
}
رسالة إرجاع عامة (bool IsSucceed، رسالة سلسلة، رمز int، بيانات الكائن، بيانات الكائن [])
{
this.m_Succeed=IsSucceed;
this.m_Message=Message;
this.m_Code=Code;
this.m_Data=Data;
this.m_Datas=Datas;
}
//
منطقي m_Succeed؛
سلسلة m_Message؛
كثافة العمليات m_Code;
كائن m_Data؛
الكائن [] m_Datas؛
نجاح المنطق العام
{
الحصول على {العودة 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