2012-01-22 13 views
5

Szukałem już trochę tego i próbowałem kilku rzeczy i nie mogę go uruchomić, nie wyłączając niektórych rzeczy, które chcę.Kryterium aliasu programu Resharper i namespace

Zazwyczaj pozwalam Resharperowi na optymalizację przestrzeni nazw. W implementacji Service, która odwzorowuje DTO na obiekty Modelu Domeny, przyjemnym wizualnie jest stworzenie aliasu dla każdego. W ten sposób, gdy jest już późno i nie możesz zasnąć, widząc, że pomaga Dtos.Customer i .

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

Kiedy uruchamiam oczyszczanie kodu zmienia ci się:

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

Czy ktoś to zrobić lub coś podobnego i zachować R # od kolosalny go?

Odpowiedz

3

Jest to coś, co zrobi ReSharper, gdy na to pozwolisz: skróć odniesienia, po oczyszczeniu kodu.

Mimo że zachowanie to może być dla ciebie niepożądane, jest technicznie poprawne. Ponieważ w twoim kodzie skróci to coś. I właśnie to ma robić algorytm.

To jak działa algorytm, który powoduje ten wynik:

  1. Resharper znajduje odniesienie, które mogą być krótsze (nie dałeś mi wystarczająco kod dokładnie powiedzieć, gdzie, ale to nie robi materia).
  2. Po skróceniu musi się upewnić, że obiekt może zostać rozwiązany, więc dodaje do niego nowe użycie (using Customer = MyProduct.Core.Domain.Model.Customer; w twoim przypadku).
  3. Resharper wykrywa, że ​​using Dtos = MyProduct.ServiceModel.Dtos; nie jest już używany (w końcu drugie użycie obejmuje skrócony opis). I usuwa to.

Podejrzewam, że to powoduje. Nie mogę być w 100% pewny, nie widząc faktycznych zastosowań kodu. Ale jest to najprawdopodobniej przyczyną refaktoryzacji.

+0

Widzę, widzę też, dlaczego pozbywa się używania aliasów Dtos. Coś innego wymaga odwołania do MyProject. ServiceRichel. Przypuszczam, że działałoby tworzenie profilu czyszczenia kodu, który nie optymalizuje za pomocą dyrektyw. –

Powiązane problemy