【发布时间】:2016-12-08 19:55:46
【问题描述】:
我正在使用来自外部程序集的函数,该函数返回一个对象,该对象是内部类的列表,但我找不到在我的代码中强制转换它的方法。
外部程序集中的代码:
namespace AssemblyNamespace
{
internal class InternalClass
{
protected internal byte b;
protected internal int i;
}
public class PublicClass
{
public object PublicMethod()
{
return new List<InternalClass>();
}
}
}
我的代码:
using AssemblyNamespace;
static void Main()
{
PublicClass P = new PublicClass();
object obj = new object();
obj = P.PublicMethod();
// Is it possible to cast obj?
}
是否可以通过反射或其他方式投射 obj ?我查看了问题C# - How to access internal class from external assembly,但找不到使用他们建议的方法。
【问题讨论】:
-
你想把它投射到什么地方?
-
到
InternalClass的同类型,所以我可以访问b和i。 -
我一直认为不能将内部类型公开为公共函数的返回值?根据文档,“除非 C 也是公共的,否则不能拥有返回类 C 的公共方法 M”,here - 泛型是否存在漏洞?
-
找出谁编写了程序集,对他们大喊大叫。但实际上我认为您必须做一些技巧,例如序列化对象,然后将其反序列化为您拥有的类型。
-
看看这个:stackoverflow.com/questions/38057618/…。我没有尝试过,但这不是
dynamic关键字会有所帮助的情况吗?你确定b和i是字段,而不是属性?
标签: c# reflection casting