C# 多个页面调用同一个类

时间:2021-07-28 11:18:15
现在我的网站有两个页面,页面A,页面B  和一个类 my_class
然后我的页面A实例化了一个 my_class
页面B想取得A实例化的my_class中的数据  该怎么办

22 个解决方案

#1


可以传递这个实例,或者用单一模式设计一个类,或者搞个全局变量,谁都可以访问

#2


全局变量。。

#3


百度 单例模式

或者传参。

#4


可不可以说的具体一点  我不太懂
假如我在A页面中  my_class A=new my_class();
B页面中怎么使用A这个实例呢?

#5


引用 4 楼 i99121570 的回复:
可不可以说的具体一点  我不太懂
假如我在A页面中  my_class A=new my_class();
B页面中怎么使用A这个实例呢?

是否在同一程序集下?是否是 public的类

#6


类是public的
现在我不明白
假如我在A页面中实例化  my_class A=new my_class();
B页面中不重新实例化 在A的基础上 做某些操作呢

#7



public class my_class
    {
        #region 单例

        private static object sync_creater = new object();

        private static my_class _instance = null;
        public static my_class Instance
        {
            get
            {
                if (_instance == null)
                {
                    lock (sync_creater)
                    {
                        if (_instance == null)
                            _instance = new my_class();
                    }
                }
                return _instance;
            }
        }

        #endregion
}


A,B页面都用my_class.Instance来获取实例

#8


引用 6 楼 i99121570 的回复:
类是public的
现在我不明白
假如我在A页面中实例化  my_class A=new my_class();
B页面中不重新实例化 在A的基础上 做某些操作呢


 public class Singleton{
    public static Singleton model;
   
    public static Singleton getSingleton(){
        if(null == model){
            model = new Singleton();
        } 
        return model;
    }


你用的时候可以  Singleton.getSingleton()使用。
单例模式是最简单的设计模式,也有很多种实现方式,当然你最后也可能不用单例解决。

#9


 my_class 直接做成静态的 public static my_class

调用的时候直接用就行了,不用实例化,A B 都可以用  A给值后 B可以直接用

#10


全局静态,比较简单,或者单例模式也可以 C# 多个页面调用同一个类 

#11


网站 直接一个 session

#12


C# 多个页面调用同一个类

#13


引用 6 楼 i99121570 的回复:
类是public的
现在我不明白
假如我在A页面中实例化  my_class A=new my_class();
B页面中不重新实例化 在A的基础上 做某些操作呢


因为A, B使用同一个实例,所以A中修改后,B中的数据就是更新过的。

如果你想A,B互不影响。那么一种方法是B中要实例化一个新的实例。
如果想使用A中已处理过的数据,那就clone一份。

#14


传递给一个中间类的对象

#15


用全局变量  导入包

#16


可以用委托 B页面获取A页面my_class实例的值就好了,要用到时候就更新获取一下就好了

#17


引用 1 楼 bdmh 的回复:
可以传递这个实例,或者用单一模式设计一个类,或者搞个全局变量,谁都可以访问


就这个

#18


全局变量···or  单例····

#19


单例模式
引用
 public class Singleton{
    public static Singleton model;
   
    public static Singleton getSingleton(){
        if(null == model){
            model = new Singleton();
        } 
        return model;
    }

#20


需要一个静态对象。

#21


存Session里就可以了 别一个页面获取这个Session 用完后清空 

#22


对象相同就可以了

#1


可以传递这个实例,或者用单一模式设计一个类,或者搞个全局变量,谁都可以访问

#2


全局变量。。

#3


百度 单例模式

或者传参。

#4


可不可以说的具体一点  我不太懂
假如我在A页面中  my_class A=new my_class();
B页面中怎么使用A这个实例呢?

#5


引用 4 楼 i99121570 的回复:
可不可以说的具体一点  我不太懂
假如我在A页面中  my_class A=new my_class();
B页面中怎么使用A这个实例呢?

是否在同一程序集下?是否是 public的类

#6


类是public的
现在我不明白
假如我在A页面中实例化  my_class A=new my_class();
B页面中不重新实例化 在A的基础上 做某些操作呢

#7



public class my_class
    {
        #region 单例

        private static object sync_creater = new object();

        private static my_class _instance = null;
        public static my_class Instance
        {
            get
            {
                if (_instance == null)
                {
                    lock (sync_creater)
                    {
                        if (_instance == null)
                            _instance = new my_class();
                    }
                }
                return _instance;
            }
        }

        #endregion
}


A,B页面都用my_class.Instance来获取实例

#8


引用 6 楼 i99121570 的回复:
类是public的
现在我不明白
假如我在A页面中实例化  my_class A=new my_class();
B页面中不重新实例化 在A的基础上 做某些操作呢


 public class Singleton{
    public static Singleton model;
   
    public static Singleton getSingleton(){
        if(null == model){
            model = new Singleton();
        } 
        return model;
    }


你用的时候可以  Singleton.getSingleton()使用。
单例模式是最简单的设计模式,也有很多种实现方式,当然你最后也可能不用单例解决。

#9


 my_class 直接做成静态的 public static my_class

调用的时候直接用就行了,不用实例化,A B 都可以用  A给值后 B可以直接用

#10


全局静态,比较简单,或者单例模式也可以 C# 多个页面调用同一个类 

#11


网站 直接一个 session

#12


C# 多个页面调用同一个类

#13


引用 6 楼 i99121570 的回复:
类是public的
现在我不明白
假如我在A页面中实例化  my_class A=new my_class();
B页面中不重新实例化 在A的基础上 做某些操作呢


因为A, B使用同一个实例,所以A中修改后,B中的数据就是更新过的。

如果你想A,B互不影响。那么一种方法是B中要实例化一个新的实例。
如果想使用A中已处理过的数据,那就clone一份。

#14


传递给一个中间类的对象

#15


用全局变量  导入包

#16


可以用委托 B页面获取A页面my_class实例的值就好了,要用到时候就更新获取一下就好了

#17


引用 1 楼 bdmh 的回复:
可以传递这个实例,或者用单一模式设计一个类,或者搞个全局变量,谁都可以访问


就这个

#18


全局变量···or  单例····

#19


单例模式
引用
 public class Singleton{
    public static Singleton model;
   
    public static Singleton getSingleton(){
        if(null == model){
            model = new Singleton();
        } 
        return model;
    }

#20


需要一个静态对象。

#21


存Session里就可以了 别一个页面获取这个Session 用完后清空 

#22


对象相同就可以了