2011-02-02 10 views
3

私のクラスの名前が変更されました。変更できません。私は下位互換性を保つ必要があり、古い名前のラッパーを書いたくありません。 クラス2の名前を付けたり、別名を付けたりする簡単な方法はありますか? OPによるコメントから持ち上げ.NETでクラスのエイリアスを定義することはできますか?

それは消費者側で行う必要がありますので、usingディレクティブを使用するように教えてはいけない、と私は、プロジェクトを変更したくない

私の図書館を使って。

+0

'using'ディレクティブはコンシューマ側で実行する必要があるため、私のライブラリを使用しているプロジェクトは変更しないでください。 –

答えて

6

間違いなく、あなたの最良のオプションは、新しい名前に古い名前からの変換を自動化を支援するために(ReSharperのような)リファクタリングツールを使用することです。これはいくつかの理由のためにあなたに理不尽であればしかし、ここでいくつかの選択肢があります:

種類が異なるアセンブリ内にある場合は、Type Forwarderを使用することができます。これらを使用すると、特定のタイプのすべての参照をアセンブリにリダイレクトできますが、IIRCの場合は、それらを新しい名前にリダイレクトすることもできます。それはへの多くは.csファイルを変更することが苦痛になり得るような、しかしこれは、世界的に問題を解決していません

using OldClassName = SomeNameSpace.NewClassName 

それ以外の場合は、単一.csファイルのソースファイル内で次のusingステートメントを適用することができますこのusingステートメントを含めます。

別の方法として、新しいタイプのサブクラスを作成し、それに古い名前名前になることがあります。

public class OldClassName : NewClassName 

をこれは、あなたが新しいクラスのためにエイリアシング与えていますが、重複したパブリックを作成する必要があります名前を変更した型へのコンストラクターとプロキシ静的メソッド呼び出し。これは理想とはかけ離れています...私はこれをお勧めしません。

+0

このコメントは31秒後に投稿されました。「消費者側で実行する必要があるため、 'using'ディレクティブを使用するように指示しないでください。私が使用しているプロジェクトを変更したくありません。としょうかん。" – jason

+1

タイプ転送メカニズムの使用方法の詳細については、[TypeForwardedToAttribute](http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.typeforwardedtoattribute.aspx)を参照してください。 – LBushkin

0

残念ながら、ライブラリ作成者として、Xは特定の警告があるYを継承する唯一の方法です。

ILアセンブリで不正行為をする可能性はありますが、そうは考えにくいです。

関連する問題