![](/img/trans.png)
[英]does the object creating a sub appdomain get instantiated in that sub appdomain?
[英]Get the AppDomain of object
有沒有辦法確定哪個AppDomain是對象或ObjectHandle實例創建的?
如果您的對象使用(例如)從另一個AppDomain序列化到當前AppDomain“旅行”,那么它基本上已在您當前的AppDomain中“創建”。 源AppDomain可以是當前計算機上的單獨進程,也可以是遠程計算機上的其他進程。 據我所知,我不認為CLR會為您跟蹤,因為您負責在進程之間移動對象。 您可能需要在類中添加一個字段,以便設置和獲取該信息。
或者考慮使用LogicalCallContext對象,在對應appdomains的呼叫旅行時為您跟蹤此信息。 這是傑弗里里希特關於此的一個很好的博客。
來自另一個應用程序域的對象是透明代理。 可以獲取真實代理並訪問包含域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;
}
如果可能的應用程序域的列表是不知道, 這里是一個辦法讓所有的應用程序域的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.