2012-09-18 38 views
14

Trong lớp Employee Tôi có một số phương pháp, hoạt động tốt. Bây giờ tôi muốn thêm phương pháp mới, ví dụ'Lớp' không chứa định nghĩa cho 'Phương pháp'

public void ExampleMethod() 
{   
} 

Sau đó, tôi gọi nó là

Employee employee = new Employee(); 
employee.ExampleMethod(); 

ExampleMethod hiện diện trong IntelliSense hiển thị sau dấu chấm, khi tôi nhấn F12 nó cũng chuyển hướng tôi đến phương pháp đó, nhưng trong khi bắt đầu dự án tôi gặp lỗi: 'Employee' không chứa định nghĩa cho 'ExampleMethod' và không có phương thức mở rộng 'ExampleMethod' chấp nhận đối số đầu tiên của loại 'Employee' (bạn đang thiếu một chỉ thị sử dụng hoặc một tham khảo lắp ráp?)

Tôi không không biết tại sao lỗi này được gây ra, bởi vì tất cả các phương pháp trước đó khác hoạt động tốt. Có chuyện gì vậy?

+0

là lớp học này trong một số hội đồng khác? – Tigran

+2

hiện Rebuild All help? – devio

+2

bạn có thể đăng lớp nhân viên đầy đủ của mình không? Làm sạch + xây dựng lại tất cả có thể giúp – KyorCode

Trả lời

19

Có ba khả năng:

1) Nếu bạn đang giới thiệu DLL cũ thì không thể sử dụng nó. Vì vậy, bạn đã tham khảo DLL mới

2) Nếu bạn đang sử dụng nó trong không gian tên khác nhau và cố gắng sử dụng dll không gian tên khác thì nó sẽ không tham khảo phương pháp này.

3) Bạn có thể cần phải xây dựng lại dự án

Tôi nghĩ tùy chọn thứ ba có thể là nguyên nhân cho bạn. Vui lòng đăng thêm thông tin để hiểu chính xác vấn đề của bạn.

+2

4) OP có thể đã bị nhầm lẫn với một số loại mơ hồ lớp và tham chiếu một lớp nhân viên không chính xác từ một assemply/dự án khác nhau? +1. –

+0

+1 -> Không đặt tên cho bảng Cơ sở dữ liệu Khuôn khổ thực thể của bạn giống như các lớp ... Doh. – teynon

+0

Tôi chỉ cần làm sạch và xây dựng lại – KthProg

5

Tạo lớp với tên namespace có thể resovle vấn đề của bạn

namespace.Employee employee = new namespace.Employee(); 
employee.ExampleMethod(); 
+0

Tôi đã thêm thủ công vùng tên trước mỗi cuộc gọi lớp. Điều này làm việc cho tôi. –

2

tôi đã cùng một vấn đề. Hóa ra dự án tôi đã tham khảo đã không được xây dựng. Khi tôi đến trình quản lý cấu hình xây dựng trong studio trực quan và bật dự án tham chiếu, sự cố đã được giải quyết.

0

Tôi gặp vấn đề tương tự khi làm việc trong một giải pháp với nhiều dự án chia sẻ mã. Hóa ra là tôi quên cập nhật DLL trong thư mục của dự án thứ 2.

Đề xuất của tôi là thực hiện tốt như ở cột 'dự án' trong cửa sổ Danh sách lỗi và đảm bảo rằng dự án cũng sử dụng đúng DLL.

Trân trọng Dominic Rooijackers

+0

Cảm ơn bạn đã gợi ý về cột dự án. Trong ASP.NET, Global.asax được xem xét trong một dự án khác với phần còn lại của mã của bạn, có vẻ như? Vì vậy, bạn không thể gọi các phương thức internal/friend từ Global.asax. Rất phiền phức. – user169771

0

tôi đã cùng một vấn đề. Tôi đã thay đổi Phiên bản hội trong số AssemblyInfo.cs trong Thư mục Thuộc tính. Nhưng, tôi không biết tại sao vấn đề này lại xảy ra. Có lẽ trình biên dịch không hiểu rằng dll này mới hơn, chỉ cần thay đổi phiên bản của Assembly.

0

Hôm nay, tôi gặp sự cố với các triệu chứng giống hệt như bạn mô tả. Tôi đã đóng tất cả các tệp và chỉ khởi động lại VS để tìm ra rằng một số tệp biến mất từ Solution Explorer.

Sau đây giải quyết được vấn đề của tôi: bằng cách chọn dự án hiện tại trong Solution Explorer, một biểu tượng nhỏ Show all files xuất hiện trên thanh trên cùng. Nhấp chuột phải vào tệp và chọn Include In Project.

Credit

1

Tôi vừa gặp sự cố này; vấn đề có vẻ khác với các câu trả lời khác được đăng ở đây, vì vậy tôi sẽ đề cập đến nó trong trường hợp nó giúp ai đó.

Trong trường hợp của tôi, tôi có một lớp cơ sở được định nghĩa trong một assembly ("A"), một lớp dẫn xuất bên trong được định nghĩa trong một assembly thứ hai ("B") và một assembly thử nghiệm ("TEST"). Tôi tiếp xúc với nội bộ được định nghĩa trong lắp ráp "B" để "TEST" sử dụng InternalsVisibleToAttribute, nhưng bị bỏ quên để làm như vậy để lắp ráp "A". Điều này tạo ra lỗi được đề cập ở trên cùng mà không có dấu hiệu nào khác của vấn đề; sử dụng InternalsVisibleToAttribute để hiển thị hội đồng "A" tới "TEST" đã giải quyết được sự cố.

0

Nếu bạn đang sử dụng một lớp học từ một dự án khác, dự án cần phải xây dựng lại và tạo lại dll. Đảm bảo rằng "Bản dựng" được chọn cho dự án đó trên Xây dựng -> Trình quản lý cấu hình trong Visual Studio. Vì vậy, dự án tham chiếu sẽ tái xây dựng và cập nhật dll.

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