2009-10-26 12 views
12

Czy istnieje narzędzie, które auto-indent kod, który wykorzystuje object initializers w następujący sposób:Mocowanie wcięcie gdy inicjalizatory obiektów zostały wykorzystane

SomeType someType = new SomeType 
{ 
    Prop1 = "prop 1 value", 
    Prop2 = "prop 2 value", 
    Things = new List<Thing> 
    { 
     new Thing 
     { 
      ThingProp = "thing prop value" 
     } 
    } 
}; 

czyli przy użyciu tego samego nawias wcięcia przepisy są powszechnie postrzegane w innym języku C# kod.

ReSharper lubi wciskać bardziej intensywnie, ale nie będzie utrzymywał intencji, jeśli kod później się zmieni (wyłączyliśmy różne opcje ReSharper, aby temu zapobiec).

Standardowa opcja formatowania Visual Studio 2008 (Ctrl-K-D) nie zmienia wcięć obiektów inicjalizujących.

definicje klasy są zawarte poniżej

public class Thing 
{ 
    public string ThingProp { get; set; } 
} 

public class SomeType 
{ 
    public string Prop1 { get; set; } 
    public string Prop2 { get; set; } 
    public List<Thing> Things { get; set; } 
} 

Odpowiedz

16

Idź do Resharper/Opcje/Języki/C#/Formatowanie Styl/Inne i odznacz "indent array, obiektów i zbieranie initializer blok" (u dołu).

(Istnieje kilka różnych opcji związanych z tablicami, kolekcjonerami i inicjalizatorami obiektów, ale są one rozproszone w różnych sekcjach. O ile wiem, podgląd nie uwzględnia innych opcji został wybrany pod uwagę, co nie pomaga ...)

Jeśli masz ReSharper formatowanie kodu za pomocą Ctrl - ECtrl - C można zmusić go do formatowania dokładnie kod jak na twój post. Aby element osadzony był rozwinięty w pełni, należy odznaczać "Umieść prostą tablicę, obiekt i kolekcję w jednym wierszu" w Podziałach i zawijaniu wierszy, ale nie musi to być to, czego potrzebujesz w innym miejscu. :(

+0

To powstrzymuje ReSharper od wtrącania się przy formatowaniu, ale niestety nie pomaga w automatycznym formatowaniu. –

+1

Naprawdę? Dla mnie to sprawiło, że autoformatowanie działało tak, jak się spodziewałem. Kiedy naciśniesz}, co robi? ? –

+0

Mój początkowy komentarz nie był w 100% poprawny - działa, ale nie dla "Listy " inicjalizacji –

Powiązane problemy