是否可以从WCF服务中的静态构造函数调用实例方法?

时间:2010-03-11 09:15:38

标签: .net wcf static-constructor

是否可以从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实例的全局上下文时。

3 个答案:

答案 0 :(得分:0)

在这里取出WCF服务 - 这不是WCF qwuestion,它是一个纯粹的基本C#语言问题。与班级完全没有任何关系。

答案是否定的。

静态构造函数没有业务调用实例函数 - 它没有实例的引用。更改类设置,以便不需要。设计错误。很可能代码不应该是我的STATIC构造函数,而是实例构造函数。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

        private void Func()
        {
        }
    }