我有以下代码(来自https://github.com/timabell/PageStructureBuilder),并且知识渊博的ReSharper建议将DataFactoryCreatingPage()方法设为静态。

这是安全的,还是用作事件处理程序时会引入潜在的错误?

public void Initialize(InitializationEngine context)
{
    DataFactory.Instance.CreatingPage += DataFactoryCreatingPage;
    DataFactory.Instance.MovedPage += DataFactoryMovedPage;
}

void DataFactoryCreatingPage(object sender, PageEventArgs e)
{
    var parentLink = e.Page.ParentLink;
    var page = e.Page;
    parentLink = GetNewParent(parentLink, page);

    e.Page.ParentLink = parentLink;
}


我想不出任何问题,但是我想知道我的知识是否有差距。

谢谢!

最佳答案

没有理由为什么该处理程序应该是静态的; ReSharper建议将其静态化的原因可能是因为您没有在其主体内使用任何实例变量,因此没有害处,但是事件处理程序不应是静态的,因为它们应该能够修改/使用类的内部字段提供处理程序的实现

09-16 05:40