2012-01-22 20 views
5

私は少しこれを検索していくつか試してみました。ResharperとNamespaceエイリアス修飾子

通常、私はResharperに名前空間の最適化の方法を持たせました。 DTOをドメインモデルオブジェクトにマッピングするサービス実装では、それぞれの別名を作成するのに良いビジュアルです。それが遅く、あなたが睡眠不足になるときには、Dtos.CustomerDomainModel.Customerが役立ちます。

using DomainModel = MyProduct.Core.Domain.Model; 
using Dtos = MyProduct.ServiceModel.Dtos; 

私は、コードのクリーンアップを実行すると、それはにそれらの変更:誰もがこれを行うか、似たような、それを打つからR番号を維持してい

using DomainModel = MyProduct.Core.Domain.Model; 
using Customer = MyProduct.Core.Domain.Model.Customer; 

を?

答えて

3

これは、ReSharperがそれを許可するときに行うことです。コードクリーンアップ時に参照を短くします。

この動作は望ましくない場合もありますが、技術的には正しいと思われます。あなたのコードでは、何かを短縮するので。そしてそれがアルゴリズムがやろうとしていることです。

これは、この結果の原因とどのようなアルゴリズムの作品です:

  1. ReSharperのは、(あなたが私に正確にあなたを伝えるために十分なコードを与えられていませんでしたが、それはない短くすることができるの参照を見つけました問題)。
  2. 短縮した後、オブジェクトを解決できるようにする必要があるため、新しいオブジェクトを追加します(using Customer = MyProduct.Core.Domain.Model.Customer;)。
  3. Resharperはusing Dtos = MyProduct.ServiceModel.Dtos;が使用されていないことを検出します(結局のところ、使用している他のものは短い参照をカバーしています)。それを取り除く。

これは私がこれを引き起こしていると思われるものです。私はコード内の実際の使用法を見ずに100%確実にすることはできません。しかし、これはおそらくリファクタリングの原因です。

+0

私は、Dtosエイリアスを使用している理由を取り除いているのも見ています。何か他にMyProejct.ServiceModelへの参照が必要です。私は、ディレクティブを使用して最適化しないコードクリーンアッププロファイルを作成すると動作すると思います。 –