获取代理对象的基础类型
我正在使用 Castle DynamicProxy,我的 ViewModel 是一个代理,如下所示:
namespace MyApplication.ViewModels { public class MyViewModel : BaseViewModel, IMyViewModel { } }
我的视图模型的代理看起来像这样:
{Name = "IRootViewModelProxyffecb133f590422098ca7c0ac13b8f98" FullName = "IRootViewModelProxyffecb133f590422098ca7c0ac13b8f98"}
我想获取的实际类型或命名空间被代理的实际类型。有什么办法可以做到这一点吗?我想要返回 MyApplication.ViewModels.MyViewModel 类型的东西。如果我使用 concreate 类作为代理,BaseType 将返回被代理的实际类,但在使用接口时,BaseType 将返回 System.Object。
I'm using Castle DynamicProxy and my ViewModels are a proxy, something like this:
namespace MyApplication.ViewModels { public class MyViewModel : BaseViewModel, IMyViewModel { } }
a proxy of my viewmodel looks like this though:
{Name = "IRootViewModelProxyffecb133f590422098ca7c0ac13b8f98" FullName = "IRootViewModelProxyffecb133f590422098ca7c0ac13b8f98"}
I want to get the actual type or namespace of the actual type that is being proxied. Is there any way to do this? I want something that returns MyApplication.ViewModels.MyViewModel type. If I'm using concreate class as proxies, BaseType returns the actual class that is being proxied, but when using the interface, BaseType would return System.Object.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看来您可以执行以下操作来获取实际类型:
It seems you can do the following to get the actual type:
如果您代理的是类而不是接口,则可以像这样获取底层类型:
如果您无权访问 ProxyUtil,这也将起作用:
If you are proxying a class and not an interface, you can get the underlying type like this:
If you don't have access to ProxyUtil this will also work: