我需要一个静态类,在ASP .NET中使用静态方法和变量进行全局访问。但我的静态类的生命周期只适用于一个请求。每次请求都会调用静态构造函数:
public static class MyClass
{
private static object _obj;
static MyClass()
{
DoSomething();
}
private static void DoSomething()
{
}
public static void DoSomething2()
{
}
}
如果我在aspx页面中调用DoSomething2
,则每次调用静态构造函数,因此DoSomething
每次调用DoSomething2
,而不是整个应用程序调用一次。
更新:
我这样做:
public static class MyClass
{
private static MyClass2 _obj;
private static AppDomainSetup _setup;
private static AppDomain _domain;
static MyClass()
{
DoSomething();
}
private static void DoSomething()
{
// the AppDomainSetup is initialized here
//....
//
_domain = AppDomain.CreateDomain("MyDomain", AppDomain.CurrentDomain.Evidence, _setup);
_obj = (MyClass2)_domain.CreateInstanceAndUnwrap(typeof(MyClass2).Assembly.FullName, typeof(MyClass2).FullName);
}
public static void DoSomething2()
{
_obj.Method1();
}
}
所以我想使用MyClass2
中的对象,但由于性能的原因,我只想将其实例化一次。
答案 0 :(得分:0)
你可以设置一个静态标志,当它的true不需要像这样运行构造函数时:
public static class MyClass
{
private static object _obj;
private static bool flag;
static MyClass()
{
if (!flag) {
DoSomething();
flag = true;
}
}
private static void DoSomething()
{
}
public static void DoSomething2()
{
}
}
我运行你的代码没有我的编辑,它只是一次runc构造函数为每个调用方法。