jalalx
دوشنبه 04 مرداد 1389, 12:00 عصر
سلام خدمت دوست داران برنامه نویسی شیء گرا!
می خوام یه روش که قبلا به دردم خورد رو معرفی می کنم. نمی دونم اسم این Design Pattern چیه! اخه بر حسب نیاز کشفش کردم!!!
برای حرف کشیدن از این کلاس باید دو شرط زیر بر قرار باشه!
کلاس مورد نظر از نوع sealed نباشه تا بشه ازش به ارث برد.
تابع یا مشخصه (یا هر عضو مورد نظر ما) باید به صورت protected باشه.
خوب فرض کنید ما یه کلاس داریم به این شکل و می خوایم به متد Foo دسترسی پیدا کنیم.
public class Parent
{
protected void Foo()
{
Console.WriteLine("This is a sectet message!");
}
}
مسلمه اگه ما یک شیء از این کلاس درست کنیم دستمون به Foo نمی رسه!
class Program
{
static void Main()
{
Parent p = new Parent();
p.Foo(); // Error!
}
}
واسه همین این کار ها رو می کنیم:
ابتدا یه کلاس کمکی درست می کنیم و از کلاس Parent به ازث می بریم.
توش یه تابع (یا Property یا هر عضو دیگری) رو به صورت عمومی تعریف می کنیم.
توی این تابع تعریف شده (یا عضو تعریف شده) اون تابع پدر که از نوع protected است رو فراخوانی می کنیم.
مثل این:
public class Modifier : Parent
{
public Modifier()
: base()
{
}
public void CallFoo()
{
Console.Write("Message is:");
base.Foo();
}
}
حالا وقت حرف کشیدنه!
class Program
{
static void Main()
{
//Parent p = new Parent();
//p.Foo(); // Error!
Modifier modifier = new Modifier();
// Now Talk!!!
modifier.CallFoo();
}
}
امیدوارم به دردتون بخوره!!!
می خوام یه روش که قبلا به دردم خورد رو معرفی می کنم. نمی دونم اسم این Design Pattern چیه! اخه بر حسب نیاز کشفش کردم!!!
برای حرف کشیدن از این کلاس باید دو شرط زیر بر قرار باشه!
کلاس مورد نظر از نوع sealed نباشه تا بشه ازش به ارث برد.
تابع یا مشخصه (یا هر عضو مورد نظر ما) باید به صورت protected باشه.
خوب فرض کنید ما یه کلاس داریم به این شکل و می خوایم به متد Foo دسترسی پیدا کنیم.
public class Parent
{
protected void Foo()
{
Console.WriteLine("This is a sectet message!");
}
}
مسلمه اگه ما یک شیء از این کلاس درست کنیم دستمون به Foo نمی رسه!
class Program
{
static void Main()
{
Parent p = new Parent();
p.Foo(); // Error!
}
}
واسه همین این کار ها رو می کنیم:
ابتدا یه کلاس کمکی درست می کنیم و از کلاس Parent به ازث می بریم.
توش یه تابع (یا Property یا هر عضو دیگری) رو به صورت عمومی تعریف می کنیم.
توی این تابع تعریف شده (یا عضو تعریف شده) اون تابع پدر که از نوع protected است رو فراخوانی می کنیم.
مثل این:
public class Modifier : Parent
{
public Modifier()
: base()
{
}
public void CallFoo()
{
Console.Write("Message is:");
base.Foo();
}
}
حالا وقت حرف کشیدنه!
class Program
{
static void Main()
{
//Parent p = new Parent();
//p.Foo(); // Error!
Modifier modifier = new Modifier();
// Now Talk!!!
modifier.CallFoo();
}
}
امیدوارم به دردتون بخوره!!!