2009-08-25 4 views
11

Khi sử dụng Resharper, vì một số lý do, khi tôi gọi một phương thức mở rộng, nó sẽ tự động chuyển đổi nó thành một cuộc gọi phương thức tĩnh. Đây được gọi là tái cấu trúc Convert Extension Method to Plain Static.Làm cách nào để tắt chức năng tái cấu trúc tự động "Chuyển đổi phương pháp mở rộng sang đồng bằng tĩnh" trong chia sẻ lại?

foo.Bar() 

trở thành

MyStaticExtensions.Bar(foo); 

Trớ trêu thay, sau đó nó cờ này như một mùi mã. Làm cách nào để tắt tính năng này?

+0

Có một sửa chữa chưa? –

+0

tính năng tồi tệ nhất của Resharper bao giờ –

+3

chỉ thấy điều này xảy ra hôm nay tại R # 9.1 thay đổi myvar.Select (Mapper.Map ) ToList() để Enumerable.ToList (myvar.Select (Mapper.Map )) –

Trả lời

2

Điều đó không xảy ra với tôi (Resharper 4.5). Bạn đã bật tính năng "dọn dẹp im lặng" chưa? (Resharper - options - Code Cleanup).

+0

Không, có vẻ như tôi chưa thiết lập cấu hình dọn dẹp nào. Điều này thực sự chỉ xảy ra trong một tình huống cụ thể. Cụ thể là một phương thức mở rộng LINQ to SQL được định nghĩa trong một lớp từng phần. –

+1

@Charles: ok, điều đó có ý nghĩa hơn (rằng một trường hợp cụ thể của nó). Tôi sẽ cố gắng để repro ... –

+3

Có ai có sửa chữa cho điều này chưa? Nó thực sự gây phiền nhiễu vì nó chuyển đổi nó từ một phương pháp mở rộng sang một cuộc gọi phương thức tĩnh (khi sử dụng tự động dọn sạch) và sau đó đề nghị tôi chuyển đổi nó trở lại một lần nữa! :) LOL –

4

Tính năng này được nhúng trong IntelliSense của Resharper. Tôi đang sử dụng phần mở rộng LINQ-to-sql rất nhiều, vì vậy tôi đã tắt tính năng này: Resharper - Tùy chọn - IntelliSense - Bật Radiobutton Visual Studio

1

Bạn có thể tắt hành vi này bằng cách bỏ chọn Optimize 'using' directives. Đó là một điều đáng tiếc R # có hành vi điên rồ như vậy; thậm chí còn kỳ lạ hơn chỉ cho một vài tệp. Tôi đoán nó chỉ xảy ra nếu một phương pháp tĩnh trên Enumerable được gọi trong tệp hiện tại.

Để có được những hành vi sử dụng phân loại và làm sạch, tôi khuyên bạn nên cài đặt Năng suất Dụng cụ điện cầm và kiểm tra Options -> Text Editor -> C# -> Advanced -> Organize Usings -> Place 'System' directives first when sorting usings.