2012-01-17 65 views
9

Trong VS2010 C# bạn có thể, trong một lớp, gõ ctor và sau đó nhấn tab và VS sẽ tạo một hàm tạo cho lớp đó cho tôi. Rât thuận tiện.Phím tắt để tạo hàm tạo với biến (C# VS2010)

Nhưng có cách nào để tạo VS tạo một hàm tạo với tất cả các biến, thuộc tính của tôi và như vậy không?

ví dụ:

public class User 
{ 
    public String UserName { get; private set; } 
} 

Và cho điều này tôi muốn ctor + tab để làm cho tôi một

public User(string UserName) 
{ 
    this.UserName = UserName; 
} 
+4

Tại sao bạn muốn tạo một hàm tạo vi phạm các quy ước đặt tên .NET? –

+0

@Markus - bạn đã xem xét việc sử dụng các trình tạo đối tượng kiểu mới hơn trong (các) trình khách tạo chưa? –

+1

@Garry Vass Không, tôi thậm chí không biết nó là gì. – Markus

Trả lời

4

Nhờ Samuel Slade (nói với tôi nó được gọi là mã đoạn) Tôi cố gắng tìm một câu trả lời stackoverflow: Snippet code to create constructor in VS2010 Express

Và có vẻ như câu trả lời là KHÔNG, không phải không có bất kỳ plugin/extension. Nhiều đề cập đến phần mở rộng ReShaper.

10

Tôi nghĩ rằng những gì bạn đang đề cập đến là Code Snippets. Bạn có thể viết Đoạn mã của riêng bạn (chúng được viết bằng XML). Xem here để biết điểm xuất phát.

Bạn cũng có thể chỉnh sửa Đoạn mã hiện tại (chẳng hạn như ctor một đoạn mã). Tham khảo MSDN để biết một số hướng về điều này.

Lưu ý: Googling Googling trên Code Snippets sẽ mang đến nhiều hướng dẫn và tài liệu tham khảo hơn.

+2

Cảm ơn Code-Snippet, nhưng có vẻ như câu trả lời là không ... Không thể tạo các đoạn mã nâng cao như vậy. – Markus

14

Bạn loại có thể làm điều này theo cách khác xung quanh; nếu bạn bắt đầu mà không cần hàm tạo hoặc trường và cố gắng sử dụng hàm tạo không tồn tại, bạn có thể nhấn ctrl + . hỏi nó để tạo ra một cho bạn, sử dụng đầu tiên:

enter image description here

trình biên dịch này sau đó tạo một cái gì đó không phải là quá khác nhau:

public class User 
{ 
    private string username; 

    public User(string username) 
    { 
     // TODO: Complete member initialization 
     this.username = username; 
    } 
} 

Sau đó bạn có thể sửa lỗi này bằng tay nếu cần thiết (có lẽ bằng cách sử dụng trình cấu trúc lại đổi tên sẵn có, v.v.). Nhưng không phải khá những gì bạn muốn.

+0

Lý do tôi muốn một đoạn mã như vậy là tôi có một số lượng tài sản khá lớn, và nó sẽ tăng tốc công việc rất nhiều nếu tôi có. – Markus

1

Như những người khác đã lưu ý, không thể tạo đoạn trích thông minh.

Có một tiện ích bổ sung studio trực quan miễn phí có tên Comet có thể làm những gì bạn muốn. http://cometaddin.codeplex.com/

2

Đoạn mã "ctor" chỉ tạo một hàm tạo trống, nhưng không sử dụng các thuộc tính hiện có của lớp trong hàm tạo này.

Tuy nhiên, phiên bản mới nhất của Resharper cho phép bạn chọn các trường được bao gồm trong một hàm tạo (như nhật thực hiện từ một thời gian dài trước đây).

1

Nếu bạn đang sử dụng Resharper các phím tắt là Alt+Insert

Source

+1

Ngọt ngào, tôi thực sự đang sử dụng Resharper để hoạt động cho tôi! (Tuy nhiên tôi sẽ không đánh dấu nó là giải pháp vì bạn phải có nó, và tôi biết rất nhiều người không) – Markus

+0

Xin lỗi tôi đã sử dụng shorcut này trước đây, nhưng bây giờ tôi cài đặt lại studio trực quan và sự kết hợp này không 't làm việc, và trước khi tôi chưa bao giờ cài đặt Resharper. –

+0

Đảm bảo Phím tắt chia sẻ lại là mặc định trong VS –

0

ctorf này sẽ cho phép bạn tạo ra một contructor với các đối số được tạo ra dựa trên các lĩnh vực quy định tại lớp.

+1

Tôi không có VS2017 để kiểm tra, nhưng bạn có chắc đây không phải là đoạn mã ReSharper không? – Markus

+1

yup. bạn đúng. để nó ở đây bởi vì nó tốt để biết nếu bạn đã resharper. – dirtyw0lf

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