Reflection

17Jul12

To The Point aja ya..

Reflection merupakan metode untuk mengambil informasi atau meta data dari sebuah objek pada saat runtime.

Informasi yang bisa diambil seperti : nama variable, tipe variable, nilai variable, anotasi variabel, nama method, dll.

Reflection bisa digunakan untuk validasi , testing, dll.

Berikut Contoh Reflection di C#

/*
  Console Program yang mengambil nama variabel, nilai variabel, dan nilai anotasi MapField
  Semoga Bermanfaat..
*/
 public static class QueryHelpers
    {
        public static String BuildStatementQueryInsert<T>(T obj)
        {
            Type tipeObj = obj.GetType();
            FieldInfo[] fields = tipeObj.GetFields();

            foreach (var field in fields) {

                // mengambil anotasi yang ada di setiap attibut
                foreach (var attr in field.GetCustomAttributes(true))
                {

                    //jika anotasi bertipe MapField
                    if (attr is MapField)
                    {
                        MapField mapfield = (MapField)attr;
                        Console.WriteLine ("Anotasi  : " + mapfield.NameField );
                        break;
                    }

                }

            //Nama Variabel dan Nilai Variable
            Console.writeLine("Nama Field" + field.Name+"Isi Field" + field.GetValue(obj));
            }

        }
    }

//sebagai anotasi
 class MapField : Attribute
    {
        public string NameField{set;get;}

        public MapField(string NameField_)
        {
            NameField = NameField_;
        }
    }

public class Program
    {

        [MapField("Nama")] //anotasi
        public String nama ;
        [MapField("Alamat")]//anotasi
        public String alamat;
        [MapField("Usia")//anotasi
        public String usia;

        static void Main(string[] args)
        {
            Program p = new Program();
            p.nama = "Dot Net";
            p.alamat = "Server";
            p.usia = "Unlimited";
            Console.WriteLine( QueryHelpers.BuildStatementQueryInsert(p));
            Console.Read();
        }
    }
Advertisements


No Responses Yet to “Reflection”

  1. Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: