2013-07-03 94 views
0

我有一個C++類,我希望在SWIG生成的C#類中覆蓋ToStringGetHashCodeEquals覆蓋Object的虛擬方法

我該怎麼做?可能嗎? (我不想從SWIG生成的類中派生出來,當然,一個類有2個類只會使事情複雜化並導致錯誤和錯誤)。

+1

我認爲這是不可能的。 –

+0

從未使用過swig。如果swig生成源代碼,請考慮使用sed(1)腳本來編輯源代碼。 –

+1

可以將SWIG配置爲使用「partial」關鍵字生成類嗎? – Medinoc

回答

1

不知道我是否完全理解了這個問題,但如果您有權訪問源代碼並準備深入研究C#類本身,則覆蓋這些類非常簡單,請參閱下面的MSDN參考資料。

對於toString()方法見MSDN how to override ToString

對於equals()方法或==看到MSDN how to override Equals

對於GetHashCode()方法見MSDN how to override GetHashCode

我可以這樣做,看到的唯一問題是,如果你正在從SWIG生成源代碼(我從未使用過的一個產品,只是爲了說明),那麼當您輸出時可能會覆蓋源代碼,這意味着您必須重新編寫它。

避免這種情況的一個選擇是使用部分類,因此使用SWIG生成的部分類不會用覆蓋方法覆蓋部分類。

如果您從未使用過(ε2)班我想看看這裏:MSND partial classes guide

這些只是一些建議,以解決您的問題!

+0

是的,我可以配置它來生成部分類。謝謝。 – MasterMastic