2014-09-11 80 views
1

ObjectListView當我混淆代碼時停止工作。這個問題似乎周圍使用AspectName在MainForm.designer.cs
E.g設置列居中:如何使ObjectListView在混淆代碼中工作?

this.olvColumn1.AspectName = "Name"; 

混淆器可以重命名我的所有方法。有關如何解決此問題的任何建議?

+0

什麼是你使用混淆? – IVAAAN123 2014-09-11 04:14:15

+0

@ IVAAAN123 Eazfuscator.NET – Martin 2014-09-11 18:06:38

回答

2

AspectName顯然是使用屬性的名稱,這是通過混淆而擊敗的。

你必須安裝一個AspectGetter委託代替:

this.olvColumn1.AspectGetter = delegate(object x) { 
    return ((YourModelClass)x).Name; 
} 
+0

感謝您的快速回復。你能否在你的代碼中解釋更多關於「YourModelClass」的內容。目前「this.olvColumn1.AspectGetter」在MainForm.designer.cs中,我無法編輯,所以我想我需要將代碼移出到Form1.cs中。我已經使用Visual Studio中設計器視圖中可用控件上的「編輯列...」選項將列名添加到ObjectListView。更詳細的示例代碼將非常有幫助。 – Martin 2014-09-11 06:28:30

+2

'AspectGetter'不應該出現在設計器文件中。如果無論如何,你可以將它移動到Form1.cs。通常,您只需將代理附加到您的Form1.cs中,就像Grammarian指出的那樣。 'AspectGetter'優先於'AspectName'。在AspectGetter中,你可以返回任何來源的值。 OLV將使用ToString來顯示值。請注意,如果要編輯OLV中的值,還必須附加「AspectPutter」。 YourModelClass只是一個例子。 'x'包含相應行的基礎模型。無論你的模型類型是什麼 – 2014-09-11 07:29:12