我有一個C++類,我希望在SWIG生成的C#類中覆蓋ToString,GetHashCode和Equals。覆蓋Object的虛擬方法
我該怎麼做?可能嗎? (我不想從SWIG生成的類中派生出來,當然,一個類有2個類只會使事情複雜化並導致錯誤和錯誤)。
我有一個C++類,我希望在SWIG生成的C#類中覆蓋ToString,GetHashCode和Equals。覆蓋Object的虛擬方法
我該怎麼做?可能嗎? (我不想從SWIG生成的類中派生出來,當然,一個類有2個類只會使事情複雜化並導致錯誤和錯誤)。
不知道我是否完全理解了這個問題,但如果您有權訪問源代碼並準備深入研究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
這些只是一些建議,以解決您的問題!
是的,我可以配置它來生成部分類。謝謝。 – MasterMastic
我認爲這是不可能的。 –
從未使用過swig。如果swig生成源代碼,請考慮使用sed(1)腳本來編輯源代碼。 –
可以將SWIG配置爲使用「partial」關鍵字生成類嗎? – Medinoc