Search code examples
c#.netremoting.net-remoting

Get the AppDomain of object


Is there any way to determine in which AppDomain was an object or ObjectHandle instance created?


Solution

  • 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:

    public static int GetObjectAppDomain(object proxy)
    {
        RealProxy rp = RemotingServices.GetRealProxy(proxy);
        int id = (int)rp.GetType().GetField("_domainID", BindingFlags.Instance|BindingFlags.NonPublic).GetValue(rp);
        return id;
    }
    

    If the list of possible app domains isn't known, here is a way to get the list of all app domains.