PDA

View Full Version : اجرای یک فانکشن از داخل یک dll با استفاده از رفلکشن



abolfazl585
جمعه 30 فروردین 1387, 19:42 عصر
سلام دوستان
من یک dll دارم و توش یک متود بنام getSum، تا اینجاش درست، و این هم مثالش:


public int getSum(int a, int b)
{
return a+b;
}


الان من میخوام از این متود که در داخل Test.dll قرار دارد، با استفاده از Reflection در برنامه ام استفاده کنم و اعداد 2 و 3 رو بهش پاس کنم و جواب رو در یک متغییر نگه دارم.
چجوری؟

Pioneers
جمعه 30 فروردین 1387, 21:41 عصر
Reflection؟!
اگه بخوای استفاده کنی:
1-اول dll رو Add refrence می کنی
2-بعد Namespace مربوطه رو use میکنی
3-نمونه ای از کلاس مربوطه میسازی
4-متد رو استفاده میکنی:

int temp=instance.getSum(1,2)

abolfazl585
جمعه 30 فروردین 1387, 22:35 عصر
دوست عزیز این Reflection بود؟
مرسی از لطف دوستان، خودم پیداش کردم.


privatevoid button1_Click(object sender, EventArgs e)
{
Assembly assembly = Assembly.LoadFrom(@"E:\Asp.Net Projects\Class Libraries\reflection\getsum\bin\Debug\getsum.dll");
foreach (Type type in assembly.GetTypes())
{
if (type.IsClass == true)
{
//textBox1.Text += string.Format("Founded Class : {0}", type.FullName) + "\r\n";
if (type.Name == "myClassName")
{
object myClass = Activator.CreateInstance(type);
object[] Parameters = newobject[] { 2, 3 };
object result;
result = type.InvokeMember("getSum",
BindingFlags.Default | BindingFlags.InvokeMethod,
null,
myClass,
Parameters);
textBox1.Text += string.Format(" ... Result Of Invoking 'getSum' Method Is : {0} \r\n", result);
}
}
}
}