Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
}
var abhishe = new Person
{
Name = “Abhishek"
};
Console.WriteLine(abhishek.Address.AddressLine1);
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
}
var abhishe = new Person
{
Name = “Abhishek"
};
Console.WriteLine(abhishek.Address.AddressLine1);
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
}
var abhishek = new Person
{
Name = “abhishek"
};
Console.WriteLine(abhishek.Address.AddressLine1);
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
}
var abhishek = new Person
{
Name = “abhishek"
};
Console.WriteLine(abhishek.Address.AddressLine1);
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
}
var abhishek = new Person
{
Name = “abhishek"
};
Console.WriteLine(abhishek.Address == null ? "No Address" : abhishek.Address.AddressLine1);
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
}
var abhishek = new Person
{
Name = “abhishek"
};
Console.WriteLine(abhishek.Address == null ? "No Address" : abhishek.Address.AddressLine1);
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
}
var abhishek = new Person
{
Name = “abhishek"
};
Console.WriteLine(abhishek.Address == null ? "No Address" : abhishek.Address.AddressLine1);
Console.WriteLine(abhishek?.Address?.AddressLine1 ?? "No Address");
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
}
var abhishek = new Person
{
Name = “abhishek"
};
Console.WriteLine(abhishek.Address == null ? "No Address" : abhishek.Address.AddressLine1);
Console.WriteLine(abhishek?.Address?.AddressLine1 ?? "No Address");
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
var people = new[]
{
new Person(),
null
};
WriteLine(people[0]?.Name);
WriteLine(people[1]?.Name);
@ fekberg
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
var people = new[]
{
new Person(),
null
};
WriteLine(people[0]?.Name);
WriteLine(people[1]?.Name);
@ fekberg
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
Person[] people = null;
WriteLine(people?[0]?.Name);
Person[] people = null;
Console.WriteLine(
(people != null) ?
((people[0] == null) ? null : people[0].Name)
: null
);
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Null propagation in a nutshell
Person[] people = null;
WriteLine(people?[0]?.Name);
Person[] people = null;
Console.WriteLine(
(people != null) ?
((people[0] == null) ? null : people[0].Name)
: null
);
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Expression-bodied members
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Expression-bodied members
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Expression-bodied members in a nutshell
class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
public double Area => Width * Height;
}
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Expression-bodied members in a nutshell
class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
public double Area => Width * Height;
}
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Expression-bodied members in a nutshell
class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
public override string ToString() =>
"My Width is {Width} and my Height is {Height}";
}
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️Expression-bodied members in a nutshell
class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
public override string ToString() =>
"My Width is {Width} and my Height is {Height}";
}
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️String interpolation
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️String interpolation
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️String interpolation in a nutshell
public override string ToString() =>
"My Width is {Width} and my Height is {Height}";
Syntax will change in a later release to the following:
public override string ToString() =>
$"My Width is {Width} and my Height is {Height}";
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️String interpolation in a nutshell
public override string ToString() =>
"My Width is {Width} and my Height is {Height}";
Syntax will change in a later release to the following:
public override string ToString() =>
$"My Width is {Width} and my Height is {Height}";
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️String interpolation in a nutshell
public override string ToString() =>
"My Width is {Width} and my Height is {Height}";
public override string ToString()
{
object[] args = new object[] { this.Width, this.Height };
return string.Format("My Width is {0} and my Height is {1}", args);
}
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️String interpolation in a nutshell
public override string ToString() =>
"My Width is {Width} and my Height is {Height}";
public override string ToString()
{
object[] args = new object[] { this.Width, this.Height };
return string.Format("My Width is {0} and my Height is {1}", args);
}
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️String interpolation in a nutshell
int age = 28;
var result = "Hello there, I'm {age : D5} years
WriteLine(result);
int num = 28;
object[] objArray1 = new object[] { num };
Console.WriteLine(string.Format("Hello there, I'm {0:D5} years old!", objArray1));
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️String interpolation in a nutshell
int age = 28;
var result = "Hello there, I'm {age : D5} years
WriteLine(result);
int num = 28;
object[] objArray1 = new object[] { num };
Console.WriteLine(string.Format("Hello there, I'm {0:D5} years old!", objArray1));
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️nameof operator
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️nameof operator
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️nameof operator in a nutshell
static void Main(string[] args)
{
WriteLine("Parameter name is: {nameof(args)}");
}
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️nameof operator in a nutshell
static void Main(string[] args)
{
WriteLine("Parameter name is: {nameof(args)}");
}
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️nameof operator in a nutshell
public double CalculateArea(int width, int height)
{
if (width <= 0)
{
throw new ArgumentException("Parameter {nameof(width)} cannot be less than
}
return width * height;
}
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️nameof operator in a nutshell
public double CalculateArea(int width, int height)
{
if (width <= 0)
{
throw new ArgumentException("Parameter {nameof(width)} cannot be less than
}
return width * height;
}
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from عکس نگار
▪️CSharp 7.0 Hacks and Features
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️There’s more?? C#7.0
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
⏹The presentation talks about latest version of C# with context to next version of it.
⚪️There’s more?? C#7.0
Ref: slideshare.net
#WroteBy <Abhishek Sur>
#Date <30 May 2016>
#ProgrammingLanguage
#Microsoft
#DotNeT
#CSharp
#CSharp7
#SlideShare
#Summary
by @D4NTESPARDA
@ @ProgrammingLanguages
Forwarded from NikAmooz | نیک آموز
This media is not supported in your browser
VIEW IN TELEGRAM
دعوت از شما برای حضور در الکامپ ۱۳۹۵
حتما این ویدئو را مشاهده کنید...
حتما این ویدئو را مشاهده کنید...
Forwarded from DotNetZoom
#Connect #Demo #AspNetCore #Xamarin
https://goo.gl/vAd8jo
Microsoft ❤️ developers
در کنفرانس توسعه دهندگان Connect ، مایکروسافت، از ابزار، سرویس و محصولات جدیدی رونمایی کرد. یکی از اتفاقات خوب در این رویداد، ارائه ی دمو از سناریوی اشتراک گذاری دوچرخه (BikeSharing360) و معرفی معماری و مجموعه ابزارهای استفاده شده در آن است.
خبر خوب اینکه سورس کد این مجموعه شامل وب سایت های پروژه با تکنولوژی ASP .NET Core، اپلیکشن های موبایل شامل نسخه ی مربوط به BikeRider با تکنولوژی Xamarin Forms و نسخه ی مربوط به نگهداری و پشتیبانی آن با تکنولوژی کوردوا و موارد متنوع دیگر به صورت کامل در مخزن گیت هاب قرار گرفته است.
به عنوان نمونه اپلیکشن BikeRider نوشته شده با تکنولوژی زامارین فرم شامل امکانات بسیار خوب و متنوعی همچون Animations ، Converters ، Custom Controls ، Custom Renderers ، Inversion of Control (IoC) pattern ، MVVM pattern ، Messaging Center و بسیاری موارد دیگر می باشد که به خصوص برای آموزش و یادگیری بسیار مفیدند:
https://github.com/Microsoft/BikeSharing360_MobileApps
لیست تمامی پروژه های این مجموعه را که در قالب 7 مخزن مجزا در گیت هاب قرار گرفته، همراه با توضیح مختصر از امکانات و تکنولوژی های استفاده شده در آن، به همراه آدرس مخزن گیت هاب و نیز ویدئوهای مربوطه را در لینک زیر می توانید به صورت یکجا مشاهده کنید:
https://blogs.msdn.microsoft.com/visualstudio/2016/12/14/connectdemos-2016-bikesharing360-on-github/
همچنین توصیه می شود برای تماشای دمویی مختصر از تمامی موارد و امکانات ذکر شده، ویدئوی زیر از سری ویدئوهای Visual Studio Toolbox در Channel9 را از دست ندهید:
https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Exploring-our-newest-sample-app-BikeSharing360
✅ کانال تخصصی AspNet MVC
https://telegram.me/joinchat/BEv5CTyb2T-NYf2E5RZxfA
https://goo.gl/vAd8jo
Microsoft ❤️ developers
در کنفرانس توسعه دهندگان Connect ، مایکروسافت، از ابزار، سرویس و محصولات جدیدی رونمایی کرد. یکی از اتفاقات خوب در این رویداد، ارائه ی دمو از سناریوی اشتراک گذاری دوچرخه (BikeSharing360) و معرفی معماری و مجموعه ابزارهای استفاده شده در آن است.
خبر خوب اینکه سورس کد این مجموعه شامل وب سایت های پروژه با تکنولوژی ASP .NET Core، اپلیکشن های موبایل شامل نسخه ی مربوط به BikeRider با تکنولوژی Xamarin Forms و نسخه ی مربوط به نگهداری و پشتیبانی آن با تکنولوژی کوردوا و موارد متنوع دیگر به صورت کامل در مخزن گیت هاب قرار گرفته است.
به عنوان نمونه اپلیکشن BikeRider نوشته شده با تکنولوژی زامارین فرم شامل امکانات بسیار خوب و متنوعی همچون Animations ، Converters ، Custom Controls ، Custom Renderers ، Inversion of Control (IoC) pattern ، MVVM pattern ، Messaging Center و بسیاری موارد دیگر می باشد که به خصوص برای آموزش و یادگیری بسیار مفیدند:
https://github.com/Microsoft/BikeSharing360_MobileApps
لیست تمامی پروژه های این مجموعه را که در قالب 7 مخزن مجزا در گیت هاب قرار گرفته، همراه با توضیح مختصر از امکانات و تکنولوژی های استفاده شده در آن، به همراه آدرس مخزن گیت هاب و نیز ویدئوهای مربوطه را در لینک زیر می توانید به صورت یکجا مشاهده کنید:
https://blogs.msdn.microsoft.com/visualstudio/2016/12/14/connectdemos-2016-bikesharing360-on-github/
همچنین توصیه می شود برای تماشای دمویی مختصر از تمامی موارد و امکانات ذکر شده، ویدئوی زیر از سری ویدئوهای Visual Studio Toolbox در Channel9 را از دست ندهید:
https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Exploring-our-newest-sample-app-BikeSharing360
✅ کانال تخصصی AspNet MVC
https://telegram.me/joinchat/BEv5CTyb2T-NYf2E5RZxfA