比較下面同一類的兩個實例。變量instanceA
是使用反射創建的,而instanceB
是使用從VS2012項目直接引用的DLL創建的。當從反射調用構造函數時,我得到一個不同的C#對象實例
var a = Assembly.Load(File.ReadAllBytes(@"C:\MyFilePath.dll"));
var t = a.GetType("Namespace.MyClassType");
var instanceA = Activator.CreateInstance(t);
var instanceB = new Namespace.MyClassType();
問題是? 這些不等於。 instanceA
和instanceB
中的字段不同。目前我的代碼正在工作,只要我使用instanceB
即可。但是,如果我只將字母「B」更改爲「A」,則生成的對象稍有不同,在稍後的階段會打破該產品。
正如你可能明白的,我的任務是使用反射而不是參考。我已經確認調用了正確的構造函數。
請指定「不同」。 –
你怎麼知道他們是「不同的」? – Arran
特別是,它們不應該相等,因爲它們會有不同的參考地址。 – sircodesalot