Çözüldü C# Fonksiyon İçerisinde Fonksiyon Çağırma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

486759

Hectopat
Katılım
21 Nisan 2020
Mesajlar
1.123
Çözümler
7
Kod tekrarından kaçınmak için bir fonksiyon içerisinde ikinci bir fonksiyonu nasıl çağırabilirim? Örneğin Run( Login() ), Run ( Logout() ) vs...
Ortak alana sadece sorgu kodlarını yazmak istiyorum. Yardımcı olabilir misiniz?

[CODE lang="csharp" highlight="9"]public async void Run()
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
MessageDialog dialog;
try
{
conn.Open();
// Ortak kullanılan Alan

}
catch (SqlException ex)
{
StringBuilder errorMessages = new StringBuilder();
for (int i = 0; i < ex.Errors.Count; i++)
{
errorMessages.Append("Index #" + i + "\n" +
"Message: " + ex.Errors.Message + "\n" +
"LineNumber: " + ex.Errors.LineNumber + "\n" +
"Source: " + ex.Errors.Source + "\n" +
"Procedure: " + ex.Errors.Procedure + "\n");
}
dialog = new MessageDialog(Convert.ToString(errorMessages));
await dialog.ShowAsync();
}
}
}[/CODE]
 
Çözüm
Sanırım delegateler aradığın şey. Bir methodu onlar aracılığıyla çağırabiliyorsun. Araştırmayı sana bırakıyorum.
Dediğiniz kullanıma "Nested Function" deniyor ve kullanabilmek için fonksiyon parametresi olarak yazacağınız 2. fonksiyonun ilk fonksiyonun aldığı değişken tarzında bir değer döndürmesi gerekiyor.

Bu kadar titizlik takıntınız varsa ilgili fonkisyonları kapsayan ayrı bir fonksiyon yazabilirsiniz.
 
Yapmak istediğimi @Collorpus' un da dediği gibi delegateler ile çözmüş bulunmaktayım. Örnek olarak kodu buraya da yazıyorum. Yardımlarınız için çok teşekkürler @Collorpus, @LayThese

C#:
// From OP's example:

public static int Method1(string mystring)
{
      return 1;
}

// You can try Action Delegate! And then call your method using

public bool RunTheMethod(Action myMethodName)
{
      myMethodName();   // note: the return value got discarded
      return true;
}

RunTheMethod(() => Method1("MyString1"));
 
Son düzenleyen: Moderatör:

Yeni konular

Geri
Yukarı