我正在尝试访问由.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包含我想要访问的项目。我怎么能这样做?
答案 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 }));
}