Пример #1
0
            /// <summary>
            /// 說明:ICustomFormatter 實作
            /// 目的:可以傳進自己想要定義的格式化資料
            /// </summary>
            /// <param name="format"></param>
            /// <param name="arg"></param>
            /// <param name="formatProvider"></param>
            /// <returns></returns>
            public string Format(string format, object arg, IFormatProvider formatProvider)
            {
                //這邊因為是範例所以簡化,如果有多個類別 可以先用IS判斷再轉到對應的型別,餵進對應的格式化
                classPerson person = arg as classPerson;

                if (person == null)
                {
                    return(string.Empty);
                }

                switch (format)
                {
                case "Ch":
                    return(string.Format("{0} {1}", person.FirstName, person.LastName));

                case "Eg":
                    return(string.Format("{0} {1}", person.LastName, person.FirstName));

                case "ChM":
                    return(string.Format("{0} {1} : {2}", person.FirstName, person.LastName, person.IDCode));

                default:
                    return(string.Format("{0} {1}", person.LastName, person.FirstName));
                }
            }
Пример #2
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //============ 1. 基本覆寫ToString() 格式化 + IFormattable 格式化(可帶參數的字串格式化)
            classA      objA = new classA();
            classPerson objB = new classPerson()
            {
                IDCode = "H333456789", FirstName = "王", LastName = "小明"
            };

            //Class資訊(類別資訊)
            var resultA = objA.ToString();
            //王 小明
            var resultB = objB.ToString("Ch", null);
            //小明 王
            var resullC = objB.ToString("Eg", null);
            //王 小明
            var resullD = objB.ToString();


            //============= 2. 使用格式化器的方法

            classPerson objC = new classPerson()
            {
                FirstName = "王", LastName = "大明", IDCode = "H333456790"
            };
            classPersonFormatter cpFormatter = new classPersonFormatter();
            //王 大明
            var result_objC_A = objC.ToString();
            //王 大明
            var result_objC_B = cpFormatter.Format("Ch", objC, null);
            //大明 王
            var resull_objC_C = cpFormatter.Format("Eg", objC, null);
            //王 大明 : H333456790
            var resull_objC_D = cpFormatter.Format("ChM", objC, null);

            //============  結合 1. 2.的方法
            classPersonCombination objD =
                new classPersonCombination()
            {
                FirstName = "王", LastName = "超明", IDCode = "H333456791"
            };

            classPersonFormatter cp2Formatter = new classPersonFormatter();
            //王 超明
            var result_objD_A = objD.ToString();
            //王 超明
            var result_objD_B = objD.ToString("Ch", cp2Formatter);
            //超明 王
            var resull_objD_C = objD.ToString("Eg", cp2Formatter);
            //王 超明 : H333456791
            var resull_objD_D = objD.ToString("ChM", cp2Formatter);
        }