程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c#-C# 類似於全局使用的對象,但是有幾十個,有近似的基本屬性。能否簡單實現而不用建幾十個靜態類。

c#-C# 類似於全局使用的對象,但是有幾十個,有近似的基本屬性。能否簡單實現而不用建幾十個靜態類。

編輯:編程綜合問答
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#有其他的辦法實現這個功能。求教,謝謝

最佳回答:


單例的方式比較適合你這情況。幾十個對象每個對象都做成單例或者一個單例裡面包含幾十個對象

 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().方法
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved