簡體   English   中英

.NET Reflector和getters / setters問題

[英].NET Reflector and getters/setters issue

我正在使用最新的.NET Reflector來反匯編內部遺留應用程序,其源代碼幾乎無法恢復。 我需要找到一個討厭的bug的原因,然后可能修補它。 在重新創建項目結構時,Reflector像往常一樣做得很好,但很快我發現一些屬性調用被“擴展”為其get_()set_()方法簽名,導致源代碼無法編譯。

起初,我認為每個get / set調用都有問題。 但仔細看看,其中幾個是好的,而其他(特別是OleDbCommand和Forms.Control屬性)將生成為get_()set_()

一個快速的Visual Studio“搜索/替換”與正則表達式解決了這些情況,但它很尷尬。 有沒有辦法讓Reflector表現正常

編輯1 - 以下有問題的示例代碼:

/* Generated by .NET Reflector 6.1.0.11 */
/* The variable selectCommand is a OleDbCommand. */
string parameterName = "@P" + Convert.ToString(num);
selectCommand.set_CommandText(selectCommand.get_CommandText() + " WHERE SIGLA = " + parameterName);
/*
   Expected something like this (as ugly as it may seem):
   selectCommand.CommandText = selectCommand.CommandText + " WHERE SIGLA = " + parameterName;
*/

編輯2 - 組件在發布模式下構建。

你在哪里查看Reflector中的源代碼? 在當前版本(撰寫本文時為6.1.0.11)中,反匯編類型然后單擊底部的“展開方法”會產生帶有代碼的完整類定義,包括正確的屬性語法( get { ... }set { ... }

拆卸到托管C ++會出現此問題,對吧? 可能想要反匯編到C#代碼(工具欄中有下拉列表),你將獲得通常的屬性。

所以,即使這個問題很老,也永遠無法實現正確的答案,你現在可以在ILSpy塊上給出一個新工具。

也許它會產生一些更好的源代碼。

暫無
暫無

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

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