Mengembangkan Keterampilan Dinamis dengan C

Mengembangkan Keterampilan Dinamis dengan C

Pada artikel ini, kita akan membahas mengenai keterampilan dinamis dalam bahasa C#. Kami akan menggunakan contoh kasus sederhana untuk menjelaskan konsep tersebut. Selain itu, kami juga akan menampilkan contoh implementasinya.

Mengapa Keterampilan Dinamis Diperlukan?

Dalam pengembangan aplikasi, kita seringkali memerlukan kemampuan untuk membuat objek yang dapat diisi dengan nilai-nilai dari berbagai sumber. Contohnya, kita memiliki tabel database yang berisi data tentang pelanggan, dan kita ingin membuat objek yang dapat menampilkan informasi tersebut.

Menggunakan Dictionary untuk Membuat Keterampilan Dinamis

Pada artikel ini, kita akan menggunakan kelas myDynObj yang akan kita buat sendiri. Kelas ini akan memiliki property dinamis yang dapat diisi dengan nilai-nilai dari dictionary. Berikut adalah implementasinya:

public class myDynObj : DynamicObject
{
 private Dictionary<string, object> internalDict = new Dictionary<string, object>();

 public override bool TryGetMember(GetMemberBinder binder, ref object result)
 {
 return internalDict.TryGetValue(binder.Name, out result);
 }

 public override bool TrySetMember(SetMemberBinder binder, object value)
 {
 internalDict[binder.Name] = value;
 return true;
 }
}

Kelas myDynObj ini akan memiliki property dinamis yang dapat diisi dengan nilai-nilai dari dictionary. Kita dapat menambahkan property baru dengan menggunakan metode AddProperty.

Menggunakan Keterampilan Dinamis

Berikut adalah contoh penggunaan keterampilan dinamis:

Dim testTable As New DataTable("TheTable")
testTable.Columns.Add("foo")
testTable.Columns.Add("bar")
testTable.Columns.Add("Blargh")

Dim columnNames As New List(Of String)(From column As DataColumn In testTable.Columns Select column.ColumnName)

Dim m As Object = New myDynObj()
columnNames.ForEach(Sub(x) DirectCast(m, myDynObj).AddProperty(x))

Console.WriteLine(String.Format("The current properties of the object are as follows: {0}", String.Join(", ", DirectCast(m, myDynObj).GetDynamicMemberNames.Cast(Of String))))

m.foo = "hoopla" : m.Blargh = 654219 : m.waffles = "I'm New!"

Console.WriteLine("And now the values are:")
DirectCast(m, myDynObj).GetDynamicMemberNames.ToList.ForEach(Sub(x) Console.WriteLine(String.Format("{0}, {1}", x, CallByName(m, x, CallType.Get, Nothing))))

Pada contoh di atas, kita membuat objek myDynObj dan menambahkan property dinamis dengan nama yang sesuai dengan kolom-kolom dalam tabel. Kita kemudian mengisi nilai-nilai pada property tersebut.

SCATTER Command

Berikut adalah contoh SCATTER command:

4,SCATTER Command

Purpose
Assign new values to the contents of one or more fields in the current record.

Syntax
SCATTER [FIELDS <idFieldList> | FIELDS LIKE <Skeleton>
 | FIELDS EXCEPT <Skeleton>] [MEMO] [BLANK]
 | TO ArrayName | MEMVAR
 | NAME ObjectName [ADDITIVE]

Arguments
FIELDS <idFieldList>The list of fields to process. The default is all fields with the exception of memo fields, unless the command supports the MEMO clause.

SCATTER command digunakan untuk mengisi nilai-nilai pada field-field dalam sebuah record. Kita dapat menentukan field-field yang akan diisi dengan menggunakan klausa FIELDS.

Contoh Penggunaan

Berikut adalah contoh penggunaan SCATTER command:

Dim testTable As New DataTable("TheTable")
testTable.Columns.Add("foo")
testTable.Columns.Add("bar")
testTable.Columns.Add("Blargh")

Dim m As Object = New myDynObj()
columnNames.ForEach(Sub(x) DirectCast(m, myDynObj).AddProperty(x))

testTable.Rows.Add(m.foo, m.bar, m.Blargh)

Console.WriteLine("XML result:")
Using sw As New StreamWriter(Console.OpenStandardOutput())
 sw.AutoFlush = True
 Console.SetOut(sw)
 testTable.WriteXml(sw, XmlWriteMode.WriteSchema)
End Using

Console.ReadLine()

Pada contoh di atas, kita menggunakan SCATTER command untuk mengisi nilai-nilai pada field-field dalam sebuah record. Kita kemudian menulis hasilnya ke dalam file XML.

Dengan demikian, kita telah membahas mengenai keterampilan dinamis dan SCATTER command. Keterampilan dinamis dapat digunakan untuk membuat objek yang dapat diisi dengan nilai-nilai dari berbagai sumber, sedangkan SCATTER command digunakan untuk mengisi nilai-nilai pada field-field dalam sebuah record.