تست کدهای سی‌شارپ بصورت آنلاین
200, OK
https://sharplab.io icon

SharpLab (previously known as TryRoslyn)

SharpLab is a .NET code playground that shows intermediate steps and results of code compilation

Languages

SharpLab supports three source languages:

  1. C#
  2. Visual Basic
  3. F# 
تست کدهای سی‌شارپ بصورت آنلاین
معرفی کتابخانه FastMember برای کار با Reflection
200, OK
https://github.com/mgravell/fast-member icon

خیلی از مواقع ما نیاز داریم از Reflection استفاده کنیم اما Reflection به خودی خود نسبت به حالی عادی خیلی کندتر هست و نیاز به نوشتن کد‌های بیشتری دارد.

برای سرعت بیشتر و استفاده راحت‌تر از Reflection میتونین از کتابخانه FastMember استفاده کنین. (بین تست‌های که شخصا داشتم تو سناریو‌های مختلف، FastMember بین 6 تا 96 برابر سریعتر از Reflection معمولی سریع‌تر بود.)

مثلا برای دسترسی به property‌های یک object در runtime با کمک FastMember، خواهیم داشت:

var accessor = ObjectAccessor.Create(obj);
var propName = "MyProperty"
var value = accessor[propName];

نکته :

این کتابخانه کد‌ها IL برنامه رو در runtime تغییر میده، در نتیجه در محیط‌های AOT (مخفف Ahead of Time) مانند Xamarin iOS کار نخواهد کرد.


در مقاله زیر که مقاله جالبی هست توضیح میده، رفلکشن چطور کار میکنه و چرا کند هست

سپس به روش‌های افزایش پرفرمنس رفلکشن اشاره میکنه و در آخر بنچمارکی از نتیجه اونها رو نشون میده

Why Reflection Is Slow  

معرفی کتابخانه FastMember برای کار با Reflection
Inline IL ASM در #C به کمک Roslyn
302, Found
http://xoofx.com/blog/2016/05/25/inline-il-asm-in-csharp-with-roslyn/ icon
public static void Main(string[] args)
{
  // -----------------------
  // method call
  // -----------------------
  // Console.WriteLine(sizeof(Vector3) + 4)

  // IL_0000: nop
  // IL_0001: sizeof Program/Vector3
  // IL_0007: ldc.i4.4
  // IL_0008: add
  // IL_0009: call void [mscorlib]System.Console::WriteLine(int32)
  il(nop);  // just to show that we can output nop, not really instesting though!
  il(@sizeof, Vector3);  // use of @ as sizeof is a keyword
  il(ldc.i4_4);
  il(add);
  il(call, Console.WriteLine(default(int))); // we define the signature with a fake  method call
}
Inline IL ASM در #C به کمک Roslyn