繁体   English   中英

访问对象内部的项目

[英]Accessing Items inside object

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

这是我的代码;

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具有我想要访问的项目。 我怎样才能做到这一点?

最后我可以解决问题。 我认为这是有关OOP负责人的规则。 让我定义一下我的结构:

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

对不起,如果我让您感到困惑:)

您想在哪里访问它们? 您似乎使对象“ res”位于foreach循环内,因此,如果要在foreach循环外访问它,则需要将其设置为类似于:

object res;
foreach(...)
{

}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM