2013-04-05 22 views
10

Thông thường khi duyệt web mã, tôi sẽ đi qua một cái gì đó như thế này:Tới Phương pháp thực hiện chứ không phải là giao diện

public class Fruity 
{ 
    private IOrange _Orange; 

    public Fruity() 
    { 
     _Orange = new Orange() as IOrange; 
    } 

    public void PrepareFruit() 
    { 
     return _Orange.Peel(); 
    } 
} 

Tuyệt vời, vì vậy bây giờ tôi muốn xem cách các phương pháp Peel được thực hiện. Nhấp chuột phải vào phương thức sẽ đưa tôi đến Định nghĩa đưa tôi đến giao diện. OK, nói đúng, định nghĩa được gán bởi giao diện cho rằng biến riêng được định nghĩa theo cách này, nhưng có cách nào để chỉ cần đi đến việc thực hiện không? Không.

Có tất nhiên Tìm tất cả tài liệu tham khảo là cách tiếp cận phân tán súng của cuộc gọi, giao diện và concretions. Nhưng nguồn gốc của việc thực hiện rõ ràng trong trường hợp này vì vậy tôi sẽ có thể nhảy đến nó tôi đã nghĩ ...

Rõ ràng, có đôi khi có thể mơ hồ được mô tả độc đáo ở đây:

Go to definition on concrete type

Nhưng chắc chắn, sẽ có tùy chọn Thực hiện chuyển đến khi triển khai rõ ràng.

+4

Có thể là giá trị tải phiên bản dùng thử của ReSharper trong đó có một "đi đến thực hiện" và một loạt các công cụ khác, tôi don 't biết làm thế nào tôi đã từng hoạt động mà không có nó.Tôi không biết làm thế nào để làm điều tương tự trong IDE mặc định – NDJ

+0

Nó không phải là rõ ràng cả. Niềng răng không khớp cho thấy bạn chưa đăng cả lớp 'Fruity', vậy làm thế nào chúng ta có thể biết bạn không có hàm thành viên đặt' _Orange' thành 'new MangoPretendingToBeAnOrange()'? – hvd

+0

Có vẻ như một bản sao của: http://stackoverflow.com/questions/4662784/visual-studio-is-there-a-way-to-navigate-to-real-implementation-of-method-behin? – nicodemus13

Trả lời

7

Nếu bạn nhấp đúp hoặc đánh dấu Peel và nhấn CTRL+, bạn sẽ nhận được cửa sổ "điều hướng đến biểu tượng" sẽ liệt kê thực hiện thực tế, thường là mục thứ hai. Đó là cách nhanh nhất để tìm kiếm nó mà không có công cụ của bên thứ 3. Và không giống như "tìm tất cả các tài liệu tham khảo", nó chỉ hiển thị các định nghĩa phương thức và không chỉ bất cứ nơi nào nó được gọi.

+0

Phương pháp 'Peel' có thể tồn tại cho tất cả các trái cây và "Điều hướng đến" không giới hạn chính nó đối với các lớp đang triển khai 'IOrange' theo như tôi biết. 1 anyway, nếu tên phương pháp là hợp lý, điều này không phải là một vấn đề lớn. – hvd

+0

Thật vậy, nó chắc chắn không phải là lý tưởng, nhưng nó có lẽ là lựa chọn tốt nhất mà không có các công cụ của bên thứ 3. – PhonicUK

2

Nếu bạn đi tới trình đơn Visual Studio "Xem" và chọn "Cửa sổ định nghĩa mã", khi bạn bấm vào .Peel() bạn có thể được hiển thị việc thực hiện .Peel() (điều này không phải lúc nào cũng hoạt động, nhưng hãy thử và xem) .

1

Tất nhiên đã tồn tại trong Visual Studio! Nó ở đó từ bao giờ.

Nhấp chuột phải vào mã của bạn (Ví dụ: thuộc tính), chọn "Xem hệ thống phân cấp cuộc gọi". Trong cửa sổ Phân cấp cuộc gọi, chọn thư mục Implements.

Hiện tại bạn đang ở đây. Tại sao Resharper ??? Tất nhiên không phải là phức tạp như đi để thực hiện từ resharper cho phép thẩm vấn trực tiếp trên giao diện, nhưng chỉ có một tài sản, hoặc một phương pháp từ giao diện đó là đủ. Ví dụ:

public interface IModule 
{ 
int Count { get; set; } 
} 

public class Module : Imodule 
{ 
    public int Count {get; set;} 
} 

public class Module2 : Imodule 
{ 
    public int Count {get; set;} 
} 

Nhấp chuột phải vào tước tài sản (bất cứ nơi nào - bên trong lớp hoặc bên trong giao diện) và chọn "View Gọi Hierarchy", nên nói trước với các lớp thực hiện nó, và do đó toàn bộ giao diện.

Ban đầu, tất cả chúng ta đều yêu thích Chia sẻ lại, với thời gian, tất cả chúng ta đều ghét nó!

+0

Vâng, đây là một chút tốt hơn so với "Tìm tất cả các tài liệu tham khảo", nhưng nó thiếu sự trực tiếp của "Go To Definition" đó là loại điều tôi đang tìm kiếm ... –

0

Với Visual Studio> = 2015 bạn có thể nhảy đến thực hiện với phím tắt Ctrl + F12

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