Мой коллега и я столкнулись с этим, когда изучали список вызовов делегата. Если вы создаете событие, скажем, в классе X, то вы можете получить доступ к открытым методам штрафа события из этого класса. Но (и, пожалуйста, игнорируйте такие вещи, как, например, почему у вас есть публичный доступ к ученикам, это не то, о чем мы просим!), Если у нас есть класс Y, создающий экземпляр X, и доступ к событию внутри X, это не может вызовите любой из открытых методов, таких как GetInvocationList () события. Мы хотели знать, как это работает. Вот пример кода (прочитайте комментарии, чтобы понять, что мы имеем в виду):
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()
{
}
}
Из любопытства, как вы этого добиваетесь и в чем причина того, что эта функция доступна?
Большое спасибо
Амит