是否可以从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实例的全局上下文时。
答案 0 :(得分:0)
在这里取出WCF服务 - 这不是WCF qwuestion,它是一个纯粹的基本C#语言问题。与班级完全没有任何关系。
答案是否定的。
静态构造函数没有业务调用实例函数 - 它没有实例的引用。更改类设置,以便不需要。设计错误。很可能代码不应该是我的STATIC构造函数,而是实例构造函数。
答案 1 :(得分:0)
无法从静态构造函数调用实例方法。您不知道CLR何时将调用此静态构造函数。您所知道的是,它将在创建此对象的任何实例之前被调用。如果没有对象的实例,则无法调用实例方法。
答案 2 :(得分:0)
嗯,这是可能的。你能解释一下为什么需要这个吗?
public class MyService : IMyService
{
static MyService()
{
new MyService().Func();
}
private void Func()
{
}
}