0
我們有一個使用一個索引,讓人們可以任意添加鍵值對遺留類:如何發現C#索引器中使用的密鑰?
legacyInstance["myKey"] = value;
可悲的是,我們不能看或修改代碼以實現這個類。我們只能通過其各種屬性訪問它。
我們需要做的是以智能的方式克隆這個對象。普通屬性是簡單的克隆,當然:
myClone.blargle = legacyInstance.blargle;
但我們如何發現所有的人可能已添加到一個特定的對象實例,以便正確地克隆它們的鑰匙?理想的情況是這樣的:
string[] keys = legacyInstance.<#magic!#>;
foreach (string key in keys)
{
myClone[key] = legacyInstance[key];
}
雖然我懷疑魔術可能會涉及一些反思,得到它被證明是困難的,因爲我是一個思考初學者。
你不能。如果數據存儲在數據庫中會怎樣?反射如何幫助你呢? –
第一步是在Debugger中查看legacyInstance的一個實例,並查找它的屬性。如果你能找到一個你正在尋找的鍵,那麼你可以使用反射來訪問它。 –
@JohnSaunders:很棒的一點。我對此有一個普遍的不好的感覺,但是我花了太多的時間來看Reflection文檔,沒有足夠的時間思考幕後會發生什麼。你的評論使得基本問題相當清楚。 – Beska