0

是否可以从 WCF 服务中的静态构造函数调用实例方法?是否有类似当前上下文的东西,我可以通过它获取 MyService 的当前实例?

public class MyService : IMyService
{
    static MyService()
    {
        //how to call Func?
    }

    private void Func()
    {
    }
}

编辑:

这个问题是 WCF 问题,而不是关于从静态方法调用实例方法的简单语言问题。以下是 Web 应用程序中类似案例的示例:

public class MyPage : Page
{
    static MyPage()
    {
        var page = (MyPage)HttpContext.Current.Handler;
        page.Func();
    }

    private void Func()
    {
    }

}

所以我希望在 WCF 中调用服务时存在一些具有当前执行的 MyService 实例的全局上下文。

4

3 回答 3

0

嗯,这是可能的。你能解释一下为什么需要这个吗?

public class MyService : IMyService
    {
        static MyService()
        {
            new MyService().Func();
        }

        private void Func()
        {
        }
    }
于 2010-03-11T09:23:12.047 回答
0

在这里取出 WCF 服务 - 这不是 WCF 问题,它是一个纯粹的基本 C# 语言问题。与作为服务的类完全无关。

答案是不。

静态构造函数没有调用实例函数的业务——它没有实例的引用。更改类设置,这样就不需要了。设计错误。代码很可能不应该在静态构造函数中,而是在实例构造函数中。

于 2010-03-11T09:19:50.773 回答
0

不能从静态构造函数调用实例方法。您不知道 CLR 何时会调用此静态构造函数。您所知道的是,它将在该对象的任何实例创建之前被调用。如果没有对象的实例,就不能调用实例方法。

于 2010-03-11T09:20:16.513 回答