Is there any way to determine in which AppDomain was an object or ObjectHandle instance created?
相关问题
- Sorting 3 numbers without branching [closed]
- Graphics.DrawImage() - Throws out of memory except
- Generic Generics in Managed C++
- Why am I getting UnauthorizedAccessException on th
- 求获取指定qq 资料的方法
An object from another app domain is a transparent proxy. It is possible to get the real proxy and access the private field that contains the domain id:
If the list of possible app domains isn't known, here is a way to get the list of all app domains.
If your object "travelled" using (e.g.) serialization from another AppDomain to the current AppDomain then it has essentially been "created" in your current AppDomain. The source AppDomain could be a separate process on the current computer or another process on a remote computer. As far as I am aware, I don't think that the CLR keeps track of that for you, since you are responsible for moving objects between processes. You would probably need to add a field to your class so that you can set and get that information.
Or consider using a LogicalCallContext object that tracks this information for you while travelling with a call accross appdomains. Here is a good blog by Jeffrey Richter about this.