1

如何获取被 Unity 的 VirtualMethodInterceptor 拦截的代理对象的“原始”类型?我有类似的东西:

T obj = (T)Intercept.NewInstance(typeof(T), new VirtualMethodInterceptor(), new[] { new MyInterceptor() });

那么当我询问它的类型时,obj它将类似于DynamicModule.ns.Wrapped_TheRealType_7615f35579e1442192a7aaf806733b7b

如何TheRealType通过代码获取 's Type?

4

1 回答 1

2

您可以降低生成类型的继承层次结构,直到找到正确的类型。

Type original = target.GetType();
while (original.Name.StartsWith("Wrapped_"))
{
  original = original.BaseType;
}

不漂亮,但它应该可以解决问题。

于 2012-10-18T15:23:24.953 回答