راحل حل بسیار جالب Citrix
Citrix Systems, Inc . در ویکی پدیا
(NASDAQ: CTXS) is a multinational corporation founded in 1989, that provides server and desktop virtualization, networking, software-as-a-service (SaaS), and cloud computing technologies, including Xen open source products.
Citrix currently services around 230,000 organizations worldwide[3] and is based in Fort Lauderdale, Florida, in the South Florida metropolitan area, with subsidiary operations in California and Massachusetts, and additional development centers in Australia, India, Canada and the United Kingdom.
Following the acquisition of XenSource, Inc. in October 2007, Citrix spearheads the Xen open source hypervisor project.
اصول Entity Framwork Code First
یک مقاله خیلی عالی از همکارم آقای وحید حسنی
Extension Methods
· آیا به کلاس های sealed می توان تابعی افزود ؟
· چگونه می توان یک تابع را به هر نوع کلاسی اضافه کرد ؟
· آیا می توان یک کلاس را در خارج از بدنه کلاس تعمیم و یا این کار را در فضای نام همان کلاس یا خارج از آن انجام داد؟
جواب این پرسش ها در Extension Methods می باشد
قبل از C# 3.0 فقط میشد یک کلاس را از طریق ارثبری از آن توسعه داد اما حالا اکنون میتوان با متد های توسعه این کار را انجام داد
توابع تعمیم یافته به اعضاء خصوصی کلاسی که تعمیم مییابد، دسترسی ندارند.
شکل کلی توابع تعمیم یافته :
public static class ExtendingClassName { public static ReturnType MethodName(this ExtendedMethod arg) { //دستورات درون متد Return ReturnType; } }
توجه کنید که:
1. کلاس توسعهدهنده و تابع توسهدهنده باید استاتیک باشند.
2. در داخل آرگومان تابع، کلمه کلیدی this استفاده میشود.
3. بعد از this عنوان کلاسی که قصد توسعه آن را داریم، ذکر میکنیم.
4. در هرجا که خواستیم از قابلیت تعمیم داده شده استفاده کنیم باید فضای نام مربوط به آن را ذکر کنیم.
5. با کلمه کلیدی static نمیتوان کلاسی با متدهایvirtual ، abstract و override را توسعه داد.
public static class ExtendingString { public static string AddPrefix(this string arg, string prefix) { return String.FormatFormat("{0}{1}", prefix, arg); } }
|
//call method var s = "Student"; Console.WriteLine(s.AddPrefix("tbl"));
|
// خروجی tblStuden |
http://csharp.net-tutorials.com/csharp-3.0/extension-methods/