کاربرد دو متد CreateInstance , GetType در #C

       کلاسی به نام MyClass داریم که اینترفیس MyInterface را پیاده سازی کرده است. نام کلاس را به متد GetType می دهیم و نام کامل یعنی QualifiedName آن کلاس را دریافت می کنیم. نام کامل کلاس را یعنی QualifiedName را به متد CreateInstance می دهیم تا که instance از کلاس را برای ما برگرداند. حال می توانیم این instance  را به آن اینترفیسی که این کلاس آن را پیاده سازی کرده است Cast می کنیم و متدهایش را فراخوانی کنیم.

کاربرد این مساله برای زمانی است که ما در پروژه نمی دانیم قرار است که از چه کلاسی instance ایجاد کنیم و نام آن کلاس از طریق دیتابیس یا ... به ما اعلام می شود.

var myClassQualifiedName = Type.GetType("MyProject.MyClass");

var instance = Activator.CreateInstance(myClassQualifiedName);

var instanceInterface = instance as MyInterface;

if (instanceInterface != null)

         instanceInterface.myMethod();

استفاده از Anonymous Type در Linq

                         اگر در مثال قبل، حجم تایپ MyClass زیاد باشد و ما بخواهیم که مقدار برگشتی به جای اینکه لیستی از تایپ MyClass باشد لیستی از یک کلاس جدید به نام MyNewClass باشد که فقط یک فیلد به نام Id دارد، در این صورت کوئری فوق به صورت زیر نوشته می شود:

var results = (from obj in myList

                where

                 obj. myfield > 100 

select  new  MyNewClass {

Id = obj.Id

}

).ToList(); 

اعضایی ازmyList که در این شرط صدق می کنند در لیستی به نام results بازگردانده می شوند. یعنی می توان results را به صورت زیر هم تعریف کرد.  

List<MyNewClass> results

کوئری با Linq در #C

                        به عنوان مثال یک لیست به نام myList داریم که از تایپ کلاس MyClass است و این کلاس یک  property به نام MyField دارد. اگر بخواهیم کوئری بنویسیم که اعضایی از این لیست را برگرداند که در آنها مقدار MyField بزرگتر از 100 باشد، با استفاده از linq این کوئری را به صورت زیر می توان نوشت:

var results = (from obj in myList

                where

                obj. myfield > 100  

select  obj).ToList(); 

اعضایی ازmyList که در این شرط صدق می کنند در لیستی به نام results بازگردانده می شوند. یعنی می توان results  را به صورت زیر هم تعریف کرد: 

List<MyClass> results

تعریف آرایه در #C

       وقتی می خواهیم یک آرایه با نام myArray از نوع String تعریف کنیم که طولش 4 تا باشد تعریف را به صورت زیر می نویسیم:

string[]myArray  = new string[4];

کنترل های لازم قبل از انجام عملیات روی یک property - سی شارپ

            به عنوان مثال یک آبجکت داریم با نام myObject که یک property  از نوع String دارد که نامش name است و می خواهیم روی این name عملیاتی انجام بدهیم. حتماً باید قبل از انجام آن عملیات کنترل کنیم که این name مقدارش null نباشد.

if (!string.IsNullOrEmpty(myObject.name))

      var x = myObject. name.Split('/');