C++ のクラスがあり、 SWIG が生成する C# クラスでToString、GetHashCode、およびEqualsをオーバーライドしたいと考えています。
どうやってやるの?出来ますか?(もちろん、SWIG が生成するクラスから派生させたくはありません。1 つのクラスに対して 2 つのクラスを使用すると、事態が複雑になり、エラーやミスが発生するだけです)。
C++ のクラスがあり、 SWIG が生成する C# クラスでToString、GetHashCode、およびEqualsをオーバーライドしたいと考えています。
どうやってやるの?出来ますか?(もちろん、SWIG が生成するクラスから派生させたくはありません。1 つのクラスに対して 2 つのクラスを使用すると、事態が複雑になり、エラーやミスが発生するだけです)。
質問を完全に理解しているかどうかはわかりませんが、ソースにアクセスでき、C# クラス自体を詳しく調べる準備ができている場合は、これらのクラスをオーバーライドするのは非常に簡単です。以下の MSDN リファレンスをご覧ください。
ToString() については、MSDN を参照して ToString をオーバーライドする方法を参照してください。
Equals() または == については、MSDN で Equals をオーバーライドする方法を参照してください。
GetHashCode() については、MSDN の GetHashCode をオーバーライドする方法を参照してください。
これを行うことで私が見ることができる唯一の問題は、SWIG (私が使用したことのない製品です。明確にするために) からソース コードを生成している場合、出力時にソース コードを上書きする可能性があることです。つまり、もう一度書く必要があります。
これを回避するオプションは、部分クラスを使用することです。そのため、SWIG で生成した部分クラスは、オーバーライド メソッドを含む部分クラスを上書きしません。
patial クラスを使用したことがない場合は、こちらをご覧ください: MSND 部分クラス ガイド
これらは、問題に取り組むためのいくつかの提案です。