سلام من نمیتونم یک تابع را که با یک نام اما مقدار برگشتی متفاوت هستند override کنم
C#
PHP:
private static int funcationname(string appSetting)
{
//code
}
private static string funcationname(string appSetting)
{
//code
}
private static bool funcationname(string appSetting)
{
//code
}
میشه کمک کنید میخوام این سه تابع را در یک کلاس تعریف کنم
شما سه تابع ای تعریف کرده اید که پارامتر هایشان دقیقا یکسان اند، به همین دلیل کامپایلر نمی تواند
تابع مناسب را انتخاب کند. برای رفع این مشکل می توانید از implicit استفاده کنید.
ما بجای سه تابع یک تابع می سازیم که مقدار بازگشتی اش از نوع کلاس خاصی باشد.
سپس سه implicit تعریف می کنیم که این نوع کلاس را به سه نوع داده مورد نظر شما تبدیل کنند.
ابتدا خارج از محیط کلاس فعلی تان یک کلاس کوچک به نام myclass می سازیم که یک متغیر عمومی به نام value دارد :
کد:
public class myclass
{
public string value;
public myclass(string value)
{
this.value = value;
}
}
سپس یک تابع در داخل کلاس مورد نظرتان تعریف می کنیم که خروجی اش myclass است :
کد:
private static myclass funcationname(string appSetting)
{
return new myclass(appSetting);
}
حالا آن سه تابع شما را از private به public تغییر داده و اسم شان را تغییر می دهیم :
کد:
public static int funcationname_int(string appSetting)
{
//code
}
public static string funcationname_string(string appSetting)
{
//code
}
public static bool funcationname_bool(string appSetting)
{
//code
}
اکنون داخل کلاس myclass سه implicit تعریف می کنیم که توابع شما را فراخوانی کنند :
کد:
public static implicit operator int(myclass f)
{
return [B][COLOR="Blue"]yourclass[/COLOR][/B].funcationname_int(f.value);
}
public static implicit operator string(myclass f)
{
return [B][COLOR="Blue"]yourclass[/COLOR][/B].funcationname_string(f.value);
}
public static implicit operator bool(myclass f)
{
return [B][COLOR="Blue"]yourclass[/COLOR][/B].funcationname_bool(f.value);
}
عبارت yourclass باید نام کلاس شما باشد.