我创建了一个类,当我通过表单创建一个员工对象时,我想给一个消息;
这是我的类(class)、事件和代表
public delegate void ctorDel();
class Employee
{
private int empID;
private string empName;
public event ctorDel myEvent;
public Employee(int empID,string empName)
{
this.empID = empID;
this.empName = empName;
**if (myEvent != null)
{
myEvent();
}**
}
形式上
int id = Convert.ToInt16(textBox1.Text);
string name = textBox2.Text;
Employee emp = new Employee(id, name);
emp.myEvent += new ctorDel(showMessage);
和功能
public void showMessage()
{
MessageBox.Show("An employee is created");
}
最佳答案
您想要完成什么?您尝试过的方法不起作用的原因是因为您在 ctor 之后附加了您的代表。一旦你调用了“new Employee”,这个事件早就被触发了。
如果你真的需要这样的事件,创建一个工厂类:
public delegate void EmpCreated();
public EmployeeFactory {
public event EmpCreated myEvent;
public Employee Create(int empId, string empName){
var result = new Employee(empId, empName);
if(myEvent != null) myEvent();
return result;
}
}
在工厂类上订阅事件,你会得到事件。
关于C# 构造函数事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8243923/