Tôi có một lớp Repository và một lớp dịch vụ như sau:Trình khởi tạo trường không thể tham chiếu trường, phương thức hoặc thuộc tính không tĩnh?
public class DinnerRepository
{
DinnerDataContext db = new DinnerDataContext();
public Dinner GetDinner(int id)
{
return db.Dinners.SingleOrDefault(d => d.DinnerID == id);
}
// Others Code
}
public class Service
{
DinnerRepository repo = new DinnerRepository();
Dinner dinner = repo.GetDinner(5);
// Other Code
}
này ném lỗi:
A field initializer cannot reference the non-static field, method, or property.
Mặc dù tôi đã intatiated Class DinnerRepository để lộ phương pháp của nó GetDinner() trong Dịch vụ Lớp học. Điều này làm việc tốt với mã dưới đây. Có bất kỳ thay thế cho nó hoặc nó là một thực hành tiêu chuẩn? Tôi không thể sử dụng phương pháp tĩnh ở đây ..
public class Service
{
public Service()
{
DinnerRepository repo = new DinnerRepository();
Dinner dinner = repo.GetDinner(5);
}
}
Vâng, phiên bản hiện tại đọc như "vì chúng tôi có lỗi thời gian biên dịch trên' tên đơn giản ', chúng tôi tham chiếu' this' là lỗi ", chứ không phải cách khác. – SWeko
@JonSkeet Lý do cho hành vi này là các trường được khởi tạo trước hàm tạo. Vì vậy, không có thành viên cá thể khi bạn cố gắng khởi tạo các trường. Đó là lý do tại sao bạn không thể sử dụng chúng trước khi lớp được khởi tạo đúng không? – UfukSURMEN
@ UfukSURMEN: Không thực sự ... đối tượng đã tồn tại, nhưng nó sẽ mời một số lỗi khá khó hiểu. (Đôi khi rất khó chịu, phải thừa nhận ...) –