C# 构造函数事件

标签 c# events

我创建了一个类,当我通过表单创建一个员工对象时,我想给一个消息;

这是我的类(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/

相关文章:

c# - .xps 文件的正确内容类型是什么

c# - 需要 C# 服务器/客户端样式程序的帮助

c# - 你如何找出在 C# 中订阅了一个事件的内容?

events - f:events的jsf执行顺序

c# - 使用关键字 new 将委托(delegate)添加到事件中是否安全?

Qt: 如何实现 "per minute"定时器?避免失火和双火的更好选择?

c# - 在没有 Visual Studio 的情况下分析 .Net 应用程序

c# - Windows 应用程序 - 处理 taskkill

javascript - 多次调用 Raphael 悬停函数仅有效 'sometimes'

c# - 结合 CallerMemberName 与参数