2013-11-01 16 views
5

Vì tôi không tìm thấy liệu ReSharper có khả năng tạo trường sao lưu chỉ đọc riêng cho một thuộc tính hay không, có cách nào để xác định tập lệnh tùy chỉnh có thể làm điều đó không?Tạo trường chỉ đọc cho thuộc tính với ReSharper

Hãy tưởng tượng bạn có một tài sản

public Type PropertyName { get; set; } 

và sau đó bạn thiết lập một con trỏ trên dòng này, nhấn Alt + Enter và sẽ có một mục trình đơn mà chuyển tài sản để

private readonly Type propertyName; 

public Type PropertyName { get { return propertyName; } } 

tôi đã tìm thấy chính mình trong tình huống mà tôi thực sự sẽ sử dụng điều này nhiều lần.

Trả lời

8

Với R #, bạn có thể tạo Live Template. Trong trường hợp này:

  1. ReSharper> Mẫu Explorer
  2. Sống Templates Tab> Mẫu mới (biểu tượng lưới nhỏ)
  3. shorcut: propReadOnly (đây sẽ là các phím tắt sử dụng với IntelliSense)
  4. Mô tả: bất cứ điều gì làm việc cho bạn ...
  5. sẵn: trong C# 2.0 nơi khai báo kiểu thành viên được phép
  6. Tạo mẫu như:

    private readonly $Type$ $propertyName$;

    public $Type$ $PropertyName$ { get { return $propertyName$; } }

Kèm theo văn bản trong $SomeText$ sẽ chỉ định rằng văn bản như một biến cho R # để maninpulate.

Trong bảng điều khiển tên biến:

Name    Value    Editable Occurence 
Type    Choose Macro*  #2 
PropertyName  Choose Macro*  checkbox is checked 
propertyName  (see below)  not editable 
       Macro > - Value of annother variable with the first character in lower case 
         - Select "PropertyName" as the other variable 

*Choose Macro is displayed when no macro is selected; this is the default setting 

Lưu và bạn có thể sử dụng mẫu ngay trong Visual Studio bằng cách gõ các phím tắt được sử dụng, ví dụ: "propReadOnly"

+0

Đối với các "Livebs mẫu sống" khác như tôi, hãy đảm bảo sử dụng các mũi tên lên và xuống trong "bảng tên biến" để các Tham số theo thứ tự được hiển thị. "Nhập" ở trên cùng, tiếp theo là "PropertyName", theo sau là "propertyName". Cảm ơn @metro! – mmcfly

2

Bạn có thể làm việc theo cách khác xung quanh với ReSharper.

Tạo riêng lĩnh vực readonly sự ủng hộ của bạn:

private readonly Type propertyName; 

Sau đó nhấn alt + insert để tạo tài sản.

Xem thêm: Generating Properties

Edit:

lựa chọn khác là đầu tiên tạo ra một tài sản như thế này:

public MyProperty PropertyName { get { return propertyField; } } 

Sau đó nhấn alt + enter với con trỏ của bạn trên fieldName để tạo ra các cánh đồng. Sau đó, bạn sẽ nhảy đến trường và bằng cách nhấn alt + enter lần nữa Resharper sẽ làm cho nó trở thành tham số Constructor. Cuối cùng nhưng không kém bây giờ bạn sẽ có tùy chọn để nhấn alt + enter một lần nữa để làm cho trường chỉ đọc.

+0

Yeah, tôi biết điều này. Nhưng tôi hiếm khi tạo ra một trường chỉ đọc trước và sau đó tạo ra một thuộc tính sau này. Thường xuyên hơn, tôi tạo một thuộc tính và sau đó tôi phát hiện ra rằng một thuộc tính có thể là chỉ đọc bởi vì nó không bao giờ bị thay đổi sau khi được gán trong một hàm tạo. –

+0

Tôi hiểu, có thể bản chỉnh sửa có thể giúp bạn trong kịch bản. Nhưng tôi cũng hiểu rằng họ vẫn còn một chút công việc liên quan đến việc thêm tên trường. –

+0

Cảm ơn bạn đã trả lời. Cuối cùng, tôi chấp nhận câu trả lời khác cho nó cho tôi chính xác những gì tôi muốn và không xung quanh. Nó cũng trả lời câu hỏi của tôi tốt hơn, bởi vì tôi đã yêu cầu một kịch bản tùy chỉnh. –

Các vấn đề liên quan