当前位置:编程学习 > C#/ASP.NET >>

急~~~,在线等:反射调用类型方法返回未知类型列表问题

现在我用反射“PersonModel.dll",调用一个类型方法:GetAllPersons(),返回Person[],其中Person为“PersonModel.dll"在定义,请问,我要怎么操作才能取回返回的数组值呢?

急~~~,在线等,谢谢了 --------------------编程问答-------------------- GetAllPersons()在哪个类中呢? --------------------编程问答-------------------- 1、首先获取方法类似
  System.Reflection.MethodInfo mi = Parser.GetType().GetMethod("Save", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
2、  调用方法并传递其参数
mi.Invoke(Parser, new Object[] { ....});

--------------------编程问答-------------------- 下面是msdn上的部分代码
    class MyMainClass
    {
        static void Main()
        {
            // Get the type of MySimpleClass.
            Type myType = typeof(MySimpleClass);

            // Get an instance of MySimpleClass.
            MySimpleClass myInstance = new MySimpleClass();
            MyCustomBinder myCustomBinder = new MyCustomBinder();

            // Get the method information for the particular overload 
            // being sought.
            MethodInfo myMethod = myType.GetMethod("MyMethod", 
                BindingFlags.Public | BindingFlags.Instance,
                myCustomBinder, new Type[] {typeof(string), 
                    typeof(int)}, null);
            Console.WriteLine(myMethod.ToString());
            
            // Invoke the overload.
            myType.InvokeMember("MyMethod", BindingFlags.InvokeMethod, 
                myCustomBinder, myInstance, 
                    new Object[] {"Testing...", (int)32});
        }
    }

--------------------编程问答-------------------- 现在有时间,
我给你写了个Demo,你看看:

PersonModel.dll:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PersonModel
{
    public class Class1
    {

        public Person[] GetAllPersons()
        {
            Person[] p = new Person[]
            {
            new Person(){Name="aaa",Age=20},
            new Person(){Name="bbb",Age=21},
            new Person(){Name="ccc",Age=26}
            };
            return p;
        }
    }
    public class Person
    {
        public string Name { get; set; }

        public int Age { get; set; }
    }
}


测试类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "PersonModel.dll");
            object instance = assembly.CreateInstance("PersonModel.Class1");
            MethodInfo method = instance.GetType().GetMethod("GetAllPersons");
            Array result = (Array)method.Invoke(instance, null);
            
            foreach (dynamic item in result)
            {                
                Console.WriteLine(item.Name + "  " + item.Age);
            }           
          
            Console.Read();
        }
        
        
    }
}


输出:

aaa  20
bbb  21
ccc  26
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,