サンプル集  >  C#  >  クラスのメンバと値を表示
クラスのメンバと値を表示
2019/07/27

クラスのメンバと値を表示します。

◆環境
OS Windows 10 Home 1903
Visual Studio Community 2017 version 15.6.3
.NET Framework 4.8.03752
C# ツール 2.7.0-bate3-62707-11

以下の手順を行います。

  1. [ファイル]-[新規作成]-[プロジェクト]を選択します。
  2. [Visual C#]を選択し、[コンソール アプリ (.NET Framework)]を選択します。
    「プロジェクト名」は「dumpMember」にします。

Program.cs
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace dumpMember
{
    public class Customer
    {
        public string name { get; set; }

        public string tlphn { get; set; }

        public string addrss { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Customer cs = new Customer()
            {
                name = "ABC company"
              , tlphn = "0123456789"
              , addrss = "1-1, Tokyo, Japan"
            };

            dump(cs, typeof(Customer));

            Console.WriteLine("ToString={0}", cs.ToString());

            Console.ReadLine();
        }

        private static void dump(object obj, Type t)
        {
            MemberInfo[] ms = t.GetMembers();

            foreach(MemberInfo m in ms)
            {
                Console.Write("Name={0}", m.Name);
                Console.Write("\t");
                Console.Write("Type={0}", m.MemberType);
                PropertyInfo p = t.GetProperty(m.Name);
                if (p != null)
                {
                    object v = p.GetValue(obj, null);
                    if (v != null)
                    {
                        // valueがnullだとToStringで落ちる
                        Console.Write("\t");
                        Console.Write("val={0}", v.ToString());
                    }
                }
                Console.WriteLine();
            }
        }
    }
}

実行してみます。

Name=get_name   Type=Method
Name=set_name   Type=Method
Name=get_tlphn  Type=Method
Name=set_tlphn  Type=Method
Name=get_addrss Type=Method
Name=set_addrss Type=Method
Name=Equals     Type=Method
Name=GetHashCode        Type=Method
Name=GetType    Type=Method
Name=ToString   Type=Method
Name=.ctor      Type=Constructor
Name=name       Type=Property   val=ABC company
Name=tlphn      Type=Property   val=0123456789
Name=addrss     Type=Property   val=1-1, Tokyo, Japan
ToString=dumpMember.Customer

期待通りに動きました。

▲ PageTop  ■ Home


Copyright (C) 2019 ymlib.com