vencon_s 2015-05-21 17:17 采纳率: 75%
浏览 2672
已采纳

C# 类似于全局使用的对象,但是有几十个,有近似的基本属性。能否简单实现而不用建几十个静态类。

程序中有几十个需要全局使用的对象。有3个相同的属性,2个相同的方法。但是每个对象也有一些独有的属性和方法。
这些全局对象的属性根据需要会在程序中修改。
最初想法建一个基础类,基础类包含共同属性和方法。其余的对象在基础类中派生。然后把这几十个对象加入一个对象数组,启动程序的时候使用foreach使用共同的方法根据每个对象的属性值对每个对象赋值初始化。
但是这种方法的缺陷是每个对象都必须实例化。如果是在窗口1中实例化,窗口2要就调用不了,要调用也必须把他作为参数传递到窗口2。但这个存在的麻烦就是在窗口2中我需要比较很多个对象的属性,把他们全部作为参数传递也不太现实。
希望的实现:能否存在一种方法,能够派生,在程序初始化时实例化对象,并能像静态类一样的能在全局引用这几十个对象。

class bass
{

string xname;
public string Xname{get xname;set xname=value;};
public void dosome(string Xname)
{
dosomething.......
}
........
}
class myctr1:bass
{

}
class myctr2:bass
{}
.........
List myctr= new List();
myctr1 m1=new myctr1();
m1.Xname="name1";
myctr.Add(m1);
myctr2 m2=new myctr2();
m2.Xname="name2";
myctr.Add(m2);
..........
foreach (bass myc in myctr)
{
myc.dosome(Xname);

}


在窗口2中我想直接使用对象名调用。

m1.方法;

或者说C#有其他的办法实现这个功能。求教,谢谢

  • 写回答

10条回答 默认 最新

  • danielinbiti 2015-05-21 17:31
    关注

    单例的方式比较适合你这情况。几十个对象每个对象都做成单例或者一个单例里面包含几十个对象

     class CtrMgr
        {
            private static CtrMgr _ctrMgr = null;
            private myctr1 m1 = null;
            private myctr2 m2 = null;
            private CtrMgr()
            {
                List myctr = new List();
                m1 = new myctr1();
                m1.Xname = "name1";
                myctr.Add(m1);
                m2 = new myctr2();
                m2.Xname = "name2";
                myctr.Add(m2);
            }
            public void dosome(string str)
            {
    
            }
            public myctr1 getmyctr1()
            {
                return m1;
            }
            public myctr2 getmyctr2()
            {
                return m2;
            }
            public static CtrMgr getInstence()
            {
                if (_ctrMgr == null)
                {
                    _ctrMgr = new CtrMgr();
                }
                return _ctrMgr;
            }
        }
    
            使用的时候就
            CtrMgr.getInstence().getmyctr1().方法
            CtrMgr.getInstence().getmyctr2().方法
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考