Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 没有单实例模式的单实例_C# - Fatal编程技术网

C# 没有单实例模式的单实例

C# 没有单实例模式的单实例,c#,C#,请建议我最好的模式,将适合以下需要 Class Base { List<string> a; List<string> b; public Base() { //"Calling Base" } } Class Der : Base { GetListA() { return a; } GetListB() { return b;

请建议我最好的模式,将适合以下需要

Class Base
{
    List<string> a;
    List<string> b;   
    public Base()
    {
        //"Calling Base"
    }
}
Class Der : Base
{
    GetListA()
    {
        return a;
    }
    GetListB()
    {
        return b;
    }
}
Class Der1 : Base
{
    GetListA()
    {
        return a;
    }
    GetListB()
    {
        return b;
    }
}

Main()
{
    Der1 obj1 = new Der1();
    Der obj= new Der();
    obj.GetListA();
    obj.GetListB();
    obj1.GetListA();
    obj1.GetListB();
}
类基
{
清单a;
名单b;
公共基地()
{
//“呼叫基地”
}
}
等级:基础
{
GetListA()
{
返回a;
}
GetListB()
{
返回b;
}
}
类Der1:基
{
GetListA()
{
返回a;
}
GetListB()
{
返回b;
}
}
Main()
{
Der1 obj1=新的Der1();
Der obj=新的Der();
obj.GetListA();
obj.GetListB();
obj1.GetListA();
obj1.GetListB();
}
当我使用
obj1
obj2
时,当前每次创建新对象时都会调用基类构造函数

Base
类正在生成大约10k条记录。我希望只生成一次,并将其保留给其他人以供重用

它的纯web服务器应用程序和我的应用程序不接受任何静态变量/对象或单例类。没有这一点,我需要完成这项任务


有什么方法可以实现这一点吗?

类似于使用静态变量的方法是使用

您可以使用这样的属性来避免创建类的多个实例

public SomeClass Instance
{
     get
     {
          if (Application["SomeClassInstance"] == null)
          {
               Application["SomeClassInstance"] = new SomeClass();
          }
          return (SomeClass)Application["SomeClassInstance"];
     }
}
类基
{
静态列表a;
静态列表b;
公共基地()
{
if(this.a==null)
{
a=数据库.GetListitemsForA();
}
if(this.b==null)
{
b=数据库.GetListitemsForB();
}
}
}

解释为什么不能使用静态变量?作为web服务器与该语句有什么关系?如果我使用静态方法、变量,我现有的应用程序将在整个错误过程中都会出错,为什么不希望调用基类构造函数?你的两个对象都是基于它的,所以它当然会被调用。对象继承就是这样工作的。背后的逻辑是,“GenerateRecords”是一个方法,它存在于所有派生类中。这种方法会产生大量的数据,这是所有人都共有的。我的所有派生类(比如5种类型的派生类)中都有类似的代码。现在我想把方法“GenerateRecords”移到外部,我想让它成为所有类的通用方法,应该被调用一次并被其他人重用。我不知道怎么做。我现在面临的问题是基类{void Run();}classderv1:Base{void Run();}classderv2:Base{void Run();}Run()正在创建大量记录。因此,我想创建一个Run()方法,不管我的类是如何派生的,它只执行一次。我无法创建单例是条件。
Class Base
{
    static List<string> a;
    static List<string> b;   
    public Base()
    {
        if(this.a == null)
        {
             a = database.GetListitemsForA();
        }

        if(this.b == null)
        {
             b = database.GetListitemsForB();
        }

    }
}