Đồng nghiệp của tôi và tôi bắt gặp vấn đề này khi xem xét danh sách yêu cầu của một đại biểu. Nếu bạn tạo một sự kiện trong lớp X, thì bạn có thể truy cập các phương thức công khai của sự kiện tốt từ bên trong lớp đó. Nhưng (và hãy bỏ qua những thứ như tại sao bạn có quyền truy cập công cộng vào các thành viên lớp học, đây không phải là những gì chúng tôi đang hỏi!), Nếu chúng ta có lớp Y instantiating X và truy cập sự kiện trong X, nó không thể gọi bất kỳ phương thức công khai nào như GetInvocationList() của sự kiện. Chúng tôi muốn biết cách làm việc này. Dưới đây là mẫu mã (đọc nhận xét để xem ý nghĩa của chúng tôi):Làm cách nào để các phương thức công khai chỉ hiển thị trong lớp và lớp sở hữu đối tượng trong C#?
public class X
{
public delegate void TestMethod();
public event TestMethod testMethod;
private void rubbish()
{
// can access testMethod.GetInvocationList() fine here
testMethod.GetInvocationList();
}
}
public class Y
{
public Y()
{
X x = new X();
x.testMethod += this.test;
// here it says testMethod can only appear on the left hand side of += or -=
// why is this? (i.e. the below line is invalid)
x.testMethod.GetInvocationList();
}
public void test()
{
}
}
Vì tò mò bạn đạt được điều này như thế nào và lý do để có tính năng này là gì?
Nhiều Cảm ơn Amit
Bạn có hỏi "làm cách nào tôi có thể thực hiện điều tương tự cho lớp của riêng mình" hay "tại sao sự kiện được thiết kế theo cách đó"? – ken2k
@ ken2k: Tôi nghĩ cả hai. – Maheep
Xóa ** sự kiện ** từ khóa. – adatapost