1

Konu: C# ta STRING ifade içinde oluşan dinamik kodu nasıl çalıştırabiliriz?

for (int i = 1; i <= 4; i++)
                        {
                              string Cal = "x" + Convert.ToString(i) + ".Text=dr[x" + Convert.ToString(i) + ".Name].ToString();";
                           
                         // foxproda alttaki gibi çalışıyordu           
                           //&Cal;

                          // C# ta nasıl bilen varmı ??????

                            // alttaki kodlar asıl çalışan kodlar dinamik olmayan halidir.
                            // x1.Text = dr[x1.Name].ToString();
                            //x2.Text = dr[x2.Name].ToString();
                            //x3.Text = dr[x3.Name].ToString();
                            //x4.Text = dr[x4.Name].ToString();
                        }

2

Re: C# ta STRING ifade içinde oluşan dinamik kodu nasıl çalıştırabiliriz?

Virtue;

Foxpro da & ile çalışıyor dediğin o BASİT şey için .NET de Reflection öğrenmen gerekiyor ve hiç de basit değil.

http://www.csharpnedir.com/articles/read/?id=172

http://www.csharpnedir.com/articles/rea … Reflection

http://msdn.microsoft.com/en-us/library … S.80).aspx

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

3

Re: C# ta STRING ifade içinde oluşan dinamik kodu nasıl çalıştırabiliriz?

VFP mantigiyla bakarsan isler daha zor. Uzun vadede aslinda VFP'den daha kolay bence. Ne yapmak istedigimi tam anladigim soylenemez, kodundan anladigim kadariyla bir formda x1,x2...x4 textboxlar ve dr diye bir DataRow var. DataRow kolon adlari da x1,x2, ... x4. Databinding yerine x1.Text'e dr["x1"], x2.Text'e dr["x2"] filan atamak istiyorsun diye anladim ( kontrolun adi zaten kullandigin niye Name gerekti onu hic anlamadim ). Her neyse anladigim kadariyla ornek kod (formda x1,x2...x5 textbox kontrolleri var):

C#
// Ornek datarow

DataTable t = new DataTable();
t.Columns.AddRange(
     new DataColumn[] {
                new DataColumn("x1", typeof(int)),
                new DataColumn("x2", typeof(string)),
                new DataColumn("x3", typeof(DateTime)),
                new DataColumn("x4", typeof(string)),
                new DataColumn("x5", typeof(string))
       });
DataRow dr = t.NewRow();
dr["x1"] = 1;
dr["x2"] = "test";
dr["x3"] = DateTime.Now;
dr["x4"] = "merhaba";
dr["x5"] = "fox4um";
 
 
// text'lere deger atama
for (int i = 1; i <= 5; i++)
{
     var control = this.Controls[String.Format("x{0}",i)];
     control.Text = dr[control.Name].ToString();
}

Not: VFP'deki sekli de zaten & ile degil (onunla da olsa bile). & VFP'de gereksiz yere cok kullanilan bir operator. C#'ta & dogrudan yok ama Reflection namespace metodalrini kullanarak string'den Type elde edebilirsin.

4

Re: C# ta STRING ifade içinde oluşan dinamik kodu nasıl çalıştırabiliriz?

Ugur,
C#'a her gecen VFP'ci o tepkiyi veriyor:) Ama & VFP disindaki dillerde olmadigina gore gerekli gorulen birsey degil. VFP'de de dedigim gibi %90 (atmasyon yuzde tabii ki:) gereksiz kullaniliyor. Reflection hic de zor degil ve sadece & icin de degil, cok daha guclu, VFP'de yapamadigin seyleri de yapiyor. Bunun Reflection ypluyla olan ornegini sanirim yillar once UT'ye postalamistim.

5

Re: C# ta STRING ifade içinde oluşan dinamik kodu nasıl çalıştırabiliriz?

Eh,

Usta konuşunca, çırak susmalıymış smile

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

6 Son düzenleyen, VIRTUE (20.02.2010 17:36:27)

Re: C# ta STRING ifade içinde oluşan dinamik kodu nasıl çalıştırabiliriz?

Hepinize teşekkür ederim. anladığım kadarı ile string içinde yazılı bir kodu çalıştırmak için kısa bir yol yok. uğraşacaz demekki yılmak yok...işler vfp de kolaydı. C# geçmek için çok düşünmüşdüm. demek boşa değilmiş olsun öğreneceğiz... tekrar hepinize teşekkür ederim.
Örnek :
*** Foxpro *****
Cal="2+3"
Wait &Cal Wind     && Displays 5

*** C# *****
String Cal="2+3"
??????   && Displays ?????

Benim aslında ilk sorumdaki kodlar bir class içinde çalışıyor. döngü içerisine ki atamaları yapamadım.
Ornek :
Aslı çalışan       
                            x1.Text = dr["id"].ToString();
                            x2.Text = dr["kodu"].ToString();
                            x3.Text = dr["adi"].ToString();
                            x4.Text = dr["tarih"].ToString();

çalıştırmak istediğim
                        for (int i = 1; i <= 4; i++)
                        {
                            x?.Text = dr["id"].ToString();
                        }

soru işareti olan yere i değişkeni yazıp işlemin çalıştırıyorum ama hata veriyor. yazım hatalı ama nasıl hallebilirim?   

döngüdeki dr["id"] kodunu dikkate almayın. sadece örnektir.

7 Son düzenleyen, cetinbasoz (20.02.2010 19:34:07)

Re: C# ta STRING ifade içinde oluşan dinamik kodu nasıl çalıştırabiliriz?

Ben yukarida calisan bir kod ornegi verdim zaten:) Kisa yol yok demedim, kisa ve cok kolay.

C#
for (int i = 1; i <= 4; i++)

{
     var control = this.Controls[String.Format("x{0}",i)];
     control.Text = dr["id"].ToString();
}

Daha kisa istersen (datarowda fieldler sirali ise):

C#
for (int i = 1; i <= 4; i++)

{
       Controls[String.Format("x{0}", i)].Text = dr[i-1].ToString();
}

O sekilde VFP'de de yazinca hata verir zaten.