c# – Activator.CreateInstance()重载具有不同的返回类型

c# – Activator.CreateInstance()重载具有不同的返回类型,第1张

概述我正在使用Activator.CreateInstance在我的项目中构建对象. 我注意到,根据您调用的CreateInstance的重载,您可以获得所请求的对象或 ObjectHandle. 为什么是这样?这对我来说似乎非常违反直觉. public static Object CreateInstance( Type type )public static ObjectHandle Crea 我正在使用Activator.CreateInstance在我的项目中构建对象.
我注意到,根据您调用的CreateInstance的重载,您可以获得所请求的对象或 ObjectHandle.

为什么是这样?这对我来说似乎非常违反直觉.

public static Object CreateInstance( Type type )public static ObjectHandle CreateInstance( string assemblyname,string typename )

从here和here开始

解决方法 的情况下

public static Object CreateInstance( Type type )

你有可能实例化一个不是MarshalByRefObject的对象,这意味着代替代理它是一个真实的对象.

但是如果是的话

public static ObjectHandle CreateInstance( string assemblyname,string typename )

有可能,正在创建的对象要么在活动的.net执行上下文中实例化,要么可能是程序集的类型被配置为通过Unwrap()方法返回的底层代理连接到远程对象. ObjectHandle,可以在另一个AppDomain中创建远程对象.另一个AppDomain可以存在于同一进程中,使用.NET Remoting在同一台机器上的不同进程或不同机器上的远程进程.

另一个区别是,ObjectHandle.Unwrap()返回的代理对象可能有租约时间.如果已过期,则对此代理对象的任何方法调用都将失败!而CreateInstance(Type)方法的返回对象是真实对象而不是代理.

所以,两种方法都不同.

总结

以上是内存溢出为你收集整理的c# – Activator.CreateInstance()重载具有不同的返回类型全部内容,希望文章能够帮你解决c# – Activator.CreateInstance()重载具有不同的返回类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230778.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存