访问对象内的项目

时间:2013-10-30 12:52:40

标签: c#

我正在尝试访问由.net reflection命名空间的方法调用产生的内部项目。但我无法转换为任何通用列表类型和数组。有我的自定义类。

这是我的代码;

foreach (Type t in theInterfaceInheritedClasses)
{                   
    object instance = a.CreateInstance(t.FullName);
    MethodInfo[] mi = t.GetMethods();
    object res;
    foreach (var method in mi)
    {
       if (method.GetParameters().Count() == 1)
       {
           if (method.Name != "Equals" && method.Name != "GetHashCode" && method.Name != "ToString")
           {
                res= method.Invoke(instance, new object[] {
                           wdoc
                     });
                IEnumerable resultItems = (res as IEnumerable);
           }
        }
    }
}

res包含我想要访问的项目。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

最后我可以解决问题。我认为这是关于OOP原则的规则。让我来定义一下我的结构:

我设计了一个Windows应用程序,可以导入具有我的Windows应用程序调用方法的DLL文件。我的应用程序和将要导入的类库使用相同的POCO类。但起初这些类的命名空间是不同的。然后我认识到一个错误告诉类型不一致。然后我创建了一个新的类库(将我的常用类)放入这个新的类库中。并从所有需要的项目中引用了这个dll。现在我可以将对象转换为Array类型。

抱歉,如果我困惑你:)

答案 1 :(得分:-2)

您想在何处访问它们?你似乎在foreach循环中使对象“res”,所以如果你想在foreach循环之外访问它,你需要将它设置为类似于:

object res;
foreach(...)
{

}

如果您的问题是无法从res获取值的原因,即使它们应该在那里:您将函数中的数据转储到“object”类型的对象(根类型)中,因此只能从对象访问方法。如果要使用特定对象中定义的方法,请尝试将对象转换为正确的类型:

foreach(...)
{
   YourType res;
   ...
   res = (YourType)(method.Invoke(instance, new object[] { wdoc }));
}