none
自訂Class Library "集合物件"中的子物件參照與呼叫 RRS feed

  • 問題

  • 各位前輩,

    我在Visual Studio 2005 中以C#建立了兩個集合物件

    物件A
    namespace HSLibrary.HSLibA
    {
        public class ClassA : System.Collections.ArrayList
        {
            private string sSettingID;
            private string sSettingName;
            private string sSettingDescription;
            private ClassB oHSSetting;

            public ClassA()
            {
                oHSSetting = new ClassB();
                oHSSetting.SettingChanged += new HSCEvent_SettingChanged(oHSSetting_SettingChanged);
            }
            .
            .
            public ClassB HSSettings
            {
                get { return oHSSetting; }
                set { oHSSetting = value; }
            }
            .
            .
            void oHSSetting_SettingChanged(object sender, string e)
            { ...... }
           
        }
    }

    物件B
    namespace HSLibrary.HSLibA
    {
        public delegate void HSCEvent_SettingChanged(HSCHourSetting sender, string e);

        public class ClassB : System.Collections.ArrayList
        {
            private string sSettingID;
            private string sSettingName;
            private string sSettingDescription;

            public ClassA()
            {
            }
            .
            .
            public event HSCEvent_SettingChanged SettingChanged;

            protected virtual void SettingChange(string e)
            {
                if (SettingChanged != null)
                {
                    SettingChanged(this, e);
                }
            }
            .
            .
            .
            .
        }
    }

    這兩個物件的關係是
    HSLibrary.HSLibA.ClassA.ClassB
    ClassA之下有個ClassB的集合物件
    在使用ClassA.HSSettings.Add 時沒有問題 , 也可以用 Index 來操作 ( ClassA.HSSettings[index] )
    但小弟我現在遇到兩個問題了 ,

    1. 使用index是在瞭解該集合物件裡面index的對應關係 , 如果要使用特定索引子 , 例如字串來取得物件
       的話 , 該如何做 ?? ( ClassA.HSSettings[index] 要改成 ClassA.HSSettings["settingA"] )

    2. 在Setting(ClassB)裡面有引發事件 , 這個事件我想要在上一層物件內部(ClassA) 攔截並做處理 , 那
       麼我要如何知道所處理的子物件確實是引發事件的該物件(ClassB) , 而不是針對整個集合子物件

     

    2006年12月12日 上午 06:04

解答

  • 先回答你的第一個問題:

    你可以用 Dictionary<T, T>  的方式來做到你要的東西。
    例如 Dictionary<string, HSLibrary.HSLibA.ClassA>

    2006年12月12日 上午 06:08
    版主