none
如何讓其他的類別使用主Form下的某一個類別? RRS feed

  • 問題

  • 這個問題我也想了好久.....
    但一直也找不到很好的解決方案....
    所以想請問一下各位大大....

    現在有一個類別Listarray 裡面的東西是一個用List類別產生的一個物件L1
    而也有一些方法 可以新增進L1 or 從L1移除....

    此外還有一個主要的Form類別.他裡面會把Listarray建立成物件稱為listarray.
    所以就可以使用listarray的方法來新增或移除L1的東西....

    但是 現在假設有別的類別要使用到Listarray時....理所當然要把Listarray建立成物件.
    可是這樣子 就會變成主要Form裡面的listarray 與 其他listarray 裡面的資料不相同....

    簡單的說....就是希望其他的類別都沿用Form類別裡面的listarray
    讓資料新增和移除都一致就是了....

    不知道有沒有辦法....或是各位大大遇到類似這種問題的時候
    是怎樣去規劃的@@?

    謝謝大大
    2007年4月21日 下午 04:14

所有回覆

  • 如果你要多類別共用時,你要把物件放到全域變數或全域類別中,這樣就可以在所有的類別使用 .
    2007年4月22日 上午 01:05
    版主
  • 這種狀況, 可以用 Design Pattern 中的 Singleton 來解決.

    這裡有個例子, 參考看看.

    http://www.dofactory.com/Patterns/PatternSingleton.aspx
    2007年4月22日 上午 02:12
  • 真是個 GJ (Good Job) !

     

    只是不知道他要的是 "資料共用" 還是 "基於相同的性質產生物件" ...

    2007年4月22日 上午 03:43
    版主
  • 剛看了那個網頁....基本上是使用static 加上一些方法 ( 還沒完全看董QQ )
    不過大致上了解兩位大大所說的方法了
    我再去試試看 謝謝~^^~
    2007年4月22日 上午 04:29
  • 基於相同的性質產生物件 <-- 這句話有點聽不懂XDD

    是說一個物件給所有的類別使用嗎@@?....
    2007年4月22日 上午 04:31
  • Code Snippet

    public partial class Form1 : Form
        {

           public Listarray L1 = new Listarray();
            public static Form1 refMain;

            public Form1()
            {
                InitializeComponent();
                refMain = this;
            }

       }

     

    class Class1
        {
            public void Foo()
            {

              object obj = new object();
                Form1.refMain.L1.Add(obj);
            }
        }

     

    不知道上面的方法是否能夠提供您一些idea?

     

    2007年4月23日 上午 07:46