簡體   English   中英

同一域中相同靜態成員的不同值

[英]Different values for same static members in same domain

我正在用VC ++項目托管一個C#程序。 此C#程序正在使用Remoting命名空間,並且以下方法初始化Remoting:

public static void Create(...)
{
    var type = typeof(ClassA);

    RemotingConfiguration.RegisterWellKnownServiceType(type, ServiceNAME, WellKnownObjectMode.Singleton);
}

ClassA使用另一個類的靜態成員,當在指定端口上發送數據時,Remoting成為ClassA的實例; 當發生這種情況時,將重新初始化另一個類(ClassB)中的靜態成員。 換句話說,對於同一時間的靜態成員,我們有兩個不同的值,即相同的域和相同的進程(我已經檢查過)。

注意: ClassB是我的項目的類,其中包含一些靜態成員,當我使用以下命令時:

System.Reflection.Assembly.GetExecutingAssembly().GetType("ClassB").TypeHandle.Value

它在ClassA內部和外部返回不同的值。

注意:此程序無需使用主機即可正常運行。 我的托管項目可以與其他許多項目一起正常工作,沒有什么特別的。

為什么靜態成員有兩個值? 為什么相同類型的TypeHandle值不同?

我不知道為什么會這樣,但是以下解決方案解決了我的問題:

在此項目中,我正在處理AssemblyResolve事件。 當Remoting想要創建ClassA的實例時,使用程序集名稱本身觸發AssemblyResolve; 在這種情況下,您應該存儲指定的assemlby的程序集對象。 用程序集名稱觸發AssemblyResolve方法時,返回存儲的程序集對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM