小李菜刀

沉迷于程序开发中....

博客园 首页 新随笔 联系 订阅 管理
看到鞠强兄的帖子Reflection中对于out类型的获取,觉得大家使用Reflection时忘记了一个非常强大的函数InvokeMember,而是先获取一个MethodInfo或PropertyInfo对象,然后再调用相应的方法。其实直接调用InvoeMember方法更简单、更高效、通用性更强。再加上我以前发的帖子通过反射调用COM对象 中的写的Variant包装类,解决这个问题就非常简单了。看来把Reflection的操作包装一下俺还是有先见之明的。
代码如下:
Using directives

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]);
        }

    }

}

posted on 2004-10-11 21:58  小李菜刀aa  阅读(1457)  评论(3)    收藏  举报