Reflection中對於out類型的擷取的另外一種方法
來源:互聯網
上載者:User
看到鞠強兄的文章
Reflection中對於out類型的擷取,覺得大家使用Reflection時忘記了一個非常強大的函數InvokeMember,而是先擷取一個MethodInfo或PropertyInfo對象,然後再調用相應的方法。其實直接調用InvoeMember方法更簡單、更高效、通用性更強。再加上我以前發的文章
通過反射調用COM對象 中的寫的Variant封裝類,解決這個問題就非常簡單了。看來把Reflection的操作封裝一下俺還是有先見之明的。
代碼如下:Using directives#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
#endregion
namespace ConsoleApplication1
{
class Test
{
public void SetValue(string value1, out string value2)
{
value2 = "hello";
}
public void SetValue(string value1)
{
}
}
class Program
{
static void Main(string[] args)
{
Variant v = Variant.CreateInstance("ConsoleApplication1.Test");
object[] paras = new object[] { "xxx", null };
object o = v.InvokeMethod("SetValue", paras);
Console.WriteLine(paras[1]);
}
}
}