我有一个C ++课程,我希望在SWIG生成的C#类中覆盖ToString,GetHashCode和Equals。
我该怎么做?可能吗? (我不想从SWIG生成的类中派生出来,当然..对于1类有两个类会使事情变得复杂并导致错误和错误。)
答案 0 :(得分:1)
不确定我是否完全理解这个问题,但如果您有权访问源代码并准备深入研究C#类本身,那么覆盖这些类非常简单,请查看下面的MSDN参考。
对于ToString(),请参阅MSDN how to override ToString
对于等于()或==请参阅MSDN how to override Equals
对于GetHashCode(),请参阅MSDN how to override GetHashCode
我可以看到这样做的唯一问题是,如果您从SWIG生成源代码(我从未使用过的产品,只是为了澄清),那么您可能会在输出时覆盖源代码,这意味着你必须再写一次。
避免这种情况的一个选项是使用部分类,因此使用SWIG生成的部分类不会使用覆盖方法覆盖部分类。
如果您从未使用过patial课程,请查看此处:MSND partial classes guide
这些只是解决问题的一些建议!