0

C++ のクラスがあり、 SWIG が生成する C# クラスでToStringGetHashCode、およびEqualsをオーバーライドしたいと考えています。

どうやってやるの?出来ますか?(もちろん、SWIG が生成するクラスから派生させたくはありません。1 つのクラスに対して 2 つのクラスを使用すると、事態が複雑になり、エラーやミスが発生するだけです)。

4

1 に答える 1

1

質問を完全に理解しているかどうかはわかりませんが、ソースにアクセスでき、C# クラス自体を詳しく調べる準備ができている場合は、これらのクラスをオーバーライドするのは非常に簡単です。以下の MSDN リファレンスをご覧ください。

ToString() については、MSDN を参照して ToString をオーバーライドする方法を参照してください。

Equals() または == については、MSDN で Equals をオーバーライドする方法を参照してください。

GetHashCode() については、MSDN の GetHashCode をオーバーライドする方法を参照してください。

これを行うことで私が見ることができる唯一の問題は、SWIG (私が使用したことのない製品です。明確にするために) からソース コードを生成している場合、出力時にソース コードを上書きする可能性があることです。つまり、もう一度書く必要があります。

これを回避するオプションは、部分クラスを使用することです。そのため、SWIG で生成した部分クラスは、オーバーライド メソッドを含む部分クラスを上書きしません。

patial クラスを使用したことがない場合は、こちらをご覧ください: MSND 部分クラス ガイド

これらは、問題に取り組むためのいくつかの提案です。

于 2013-07-03T14:19:42.980 に答える