۱۸ مطلب با کلمهی کلیدی «آموزش سی شارپ» ثبت شده است
split کردن عناصر با linq
بسم الله الرحمن الرحیم
آموزش برنامه نویسی
اگر یک لیست به صورت زیر داشته باشیم که با یک کاراکتر خاص جدا شده باشند و بخواهیم آن ها را به صورت آیتم های جداگانه بررسی کنیم. چطور می توانیم اینکار را انجام دهیم.
string[] websites = {"Ably.ir,Google.com,Yahoo.com,Linkedin.com"};
این مشکل در لیست های json بسیار اتفاق می افتد که ما نیاز داریم عناصر را به صورت جداگانه بدست آوریم. برای این مشکل می توانید با یک دستور LiNQ ساده اطلاعات خود را بر اساس کاراکتر جداکننده به صورت عناصر جداگانه بدست آورید. برای اینکار کافی است از کوئری زیر استفاده کنید.
websites.SelectMany(n => n.Split(',')).ToList();
ادامه مطلب...
آموزش wmi (بخش دوم)
بسم الله الرحمن الرحیم
آموزش برنامه نویسی
دوره آموزشی WMI (بخش دوم)
در بخش اول آموزش wmi در خصوص wmi و ویژگی های این فریم ورک صحبت کردیم، در این بخش قصد داریم برخی از اطلاعاتی که توسط wmi می توان مورد دستیابی قرار داد را بررسی کنیم.
آموزش wmi
برای دسترسی به بانک اطلاعاتی WMI روش های بسیار زیادی وجود دارد، دو روش را ابتدا بررسی خواهیم کرد و سپس بر اساس یکی از ساده ترین روش ها برنامه ای را در این خصوص طراحی و پیاده سازی خواهیم نمود.
WMI مجموعه از اطلاعاتی است که توسط (WBEM (Web-Based Enterprise Management و (CIM (Common Information Model به صورت استاندارد برای (DMTF (Distributed Management Task Force توسعه داده شده است. در مورد هر یک از بخش های CIM و WBEM و DMTF می توانید اطلاعات بیشتر را از طریق MSDN مایکروسافت مطالعه کنید.
آموزش WBEM Test
WMI از نسخه 2000 Windows به بعد بر روی Windows موجود است. از همین رو شما می توانید توسط ابزاری با نام WBEM Test به اطلاعات این پایگاه داده دسترسی داشته باشید.
برای دسترسی به برنامه WBEM Test کافی است از طریق کلیدهای ترکیبی window + R ( منظور از Window کلید پنجره بر روی کیبورد می باشد) برنامه RUN را باز کنید و سپس دستور wbemtest را درون آن اجرا کنید.
پس از اجرای این برنامه، در ابتدا باید به WMI Repository متصل شود. اگر بخواهیم WMI Repository را توضیح دهیم، خیلی ساده می توان گفت WMI Repository یک پایگاه داده می باشد که شما می توانید اطلاعات مورد نیاز خود را از طریق این پایگاه داده بدست آورید.
برای شروع بر روی گزینه Connect کلیک کنید، و مطمئن شوید که namespace اصلی این کتابخانه، یعنی “root\cimv2” انتخاب شده است.
ادامه مطلب...
آموزش wmi
بسم الله الرحمن الرحیم
آموزش برنامه نویسی
دوره آموزشی WMI (بخش اول)
در صنایع، کارخانه ها و مجموعه های بزرگ یکی از مباحثی که همیشه مورد بررسی قرار می گیرد مبحث مانیتورینگ تجهیزات می باشد. این مبحث در همه ی حوزه های صنایع کوچک و بزرگ مورد توجه است.
از همین رو پروتکل های زیادی در دنیا به وجود آمده اند که بر اساس آن ها می توان وضعیت تجهیزات سخت افزاری و نرم افزاری دستگاه های مختلف را مورد بررسی قرار داد.
آموزش پروتکل snmp
در این مورد معروف ترین پروتکل، پروتکل SNMP می باشد. همانطور که می دانید پروتکل مجموعه از قوانین و اطلاعاتی است که به شما اجازه می دهد بر اساس یک استاندارد خاص فعالیت های خود را انجام دهید. پروتکل SNMP مخفف عبارت Simple Network Management Protocol می باشد، در این پروتکل شما بر استفاده از یک Application اطلاعات سخت افزاری و نرم افزاری تجهیزات درون شبکه را جمع آوری و ذخیره می کنید.
معرفی QT
در مبحث جمع آوری اطلاعات و مانیتورینگ معمولا از زبان های سطح پایین مانند C , C++ استفاده می کنند، زیرا شما می توانید با توجه به دسترسی این زبان ها به اطلاعات پایه هر سیستم، اطلاعات مورد نیاز خود را دریافت کنید. با توجه به این مسئله که نرم افزارهای امروزی به صورت گرافیکی باید طراحی شوند، از فریم ورک هایی برای رفع این مشکل در زبان های سطح پایین استفاده می شوند. به طور مثال محبوبترین فریم ورکی که برای طراحی نرم افزارهای SNMP مورد استفاده قرار می گیرد، فریم ورک QT می باشد.
ادامه مطلب...آموزش برنامه نویسی
بسم الله الرحمن الرحیم
آموزش خطایابی در visual studio
آموزش برنامه نویسی
لیست تمامی آموزش های این دوره
بخش دوم
یکی از بخش هایی که در طراحی نرم افزار زمان زیادی را به خود اختصاص می دهد بخش خطایابی و یا Debug کردن می باشد. معمولا در زمان خطایابی در بین حلقه های تکرار شما زمان زیادی را صرف بررسی تک تک مقادیر و عناصر درون حلقه می کنید تا حلقه ی تکرار به عنصر مورد نظر شما برسد.
مثال، کد ما به صورت زیر می باشد:
int i = 0;
while (i<50)
{
button_Debug.Text = (i++).ToString();
}
در کد بالا ما انتظار داریم، متن Button ما در آخرین بار 50 باشد اما متاسفانه 49 است، طبیعتا اگر کد خود را به صورت زیر تغییر دهیم، این مشکل حل خواهد شد. اما تصور کنید علت این خطا را نمی دانیم معمولا در چنین شرایطی ما بر روی خط مورد نظر خود Break Point قرار می دهیم، ما نیز این کار را انجام می دهیم. سپس برنامه را اجرا می کنیم تا آن را تست کنیم.
طبیعتا در هنگام اجرای برنامه باید 48 بار کلید F5 را برای continue شدن فرایند Debug بزنیم. تصور کنید این حلقه 1000 مرتبه قرار بود تکرار شود و شما در آخرین مرتبه ی تکرار نیاز داشتید کد خود را بررسی کنید.
مطمئنا همه ی ما در کد های واقعی با چنین شرایطی روبرو شده ایم و می شویم. راه حل چیست؟
آموزش visual studio 2015
یکی از ویژگی های Visual Studio امکانات مربوط به Debug کردن برنامه ها و Break Point می باشد این امکانات Visual Studio در صورتی که به صورت صحیح مورد استفاده قرار گیرد، بسیار کمک کننده خواهد بود. در اینجا می خواهیم امکانات مربوط به Break Point را در Visual Studio به شما معرفی کنیم.
بر روی خطی که Break point ایجاد کرده اید راست کلیک کنید.
زیر منوهای Break Point را با هم بررسی خواهیم کرد.
مورد اول و دوم که مشخصا برای حذف و غیر فعال کردن Break point به کار می رود.
ادامه مطلب...آموزش windows service
بسم الله الرحمن الرحیم
در طراحی و ساخت نرم افزارهای تحت Windows شما می توانید به روش های مختلف نرم افزار خود را تولید کنید. ممکن است در طراحی برخی از نرم افزارها، شما نیاز داشته باشید از هنگام اجرا شدن Windows برنامه شما شروع به کار کند.
یکی از ساده ترین روش های ممکن برای انجام این کار قراردادن نرم افزار در بخش Start up می باشد. اما ممکن است شما بخواهید نرم افزار خود را به عنوان یک برنامه پس زمینه، بدون اینکه کاربر در اجرای آن دخیل باشد اجرا کنید و یا اینکه مانند بسیاری از Processهای ویندوز، پس از اجرای ویندوز برنامه شما اجرا شود. معمولا برای انجام این کار از روشی استفاده می کنند که بر اساس آن برنامه شما در بخش Services ویندوز اضافه می شود.
این روش طبیعتا روش حرفه ای تر نسبت به روش قراردادن نرم افزار در بخش Start up می باشد. معمولا برنامه هایی که نیاز دارند به صورت Lifetime و همیشگی در حال اجرا باشند به صورت یک Service به ویندوز اضافه می شوند. برای ساخت پروژه هایی که قرار است به عنوان Service در Windows تعریف شوند، می توانید از طریق Microsoft Visual Studio نوع Windows Service Application را انتخاب کنید.
آموزش ویندوز سرویس در سی شارپ
در این آموزش قصد داریم شما را با روش طراحی یک پروژه به صورتWindows Service Application آشنا کنیم. برای شروع ویژوال استادیو خود را باز کنید و از قسمت #Visual C و گزینه Windows را انتخاب کنید. حال از قسمت میانی صفحه گزینه Windows Service را انتخاب کنید.
توجه داشته باشید این آموزش بر اساس Visual Studio 2013 می باشد و در نسخه 5 Visual Studio 201شما نمی توانید پروژه های از نوع Windows Service ایجاد کنید، در انتهای همین مقاله روش حل این مشکل را نیز آموزش داده ایم.
ادامه مطلب...
تبدیل enum به string و برعکس
بسم الله الرحمن الرحیم
تبدیل enum به string و برعکس
تبدیل enum به string
در برخی مواقع شما نیاز دارید تا یک String را به Enum تبدیل کنید. برای انجام این کار می بایست از متد Enum.ToString استفاده کنید.
مثال زیر را در نظر بگیرید
public enum Car
{
Benz,
BMW,
Peykan,
Pride,
}
//just kidding :)
Car myCar = Car.BMW;ادامه مطلب...
string stringMyCar = myCar.ToString(); // result "BMW"
بدست آوردن تمامی کلاس های یک namespace
بسم الله الرحمن الرحیم
با استفاده از کد زیر شما می توانید نام تمامی کلاس های موجود در یک namespace را بدست آورید
using System.Reflection;
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
return assembly.GetTypes().Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)).ToArray();
}
برای استفاده باید به صورت زیر عمل کنید
Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace");
for (int i = 0; i < typelist.Length; i++)
{
Console.WriteLine(typelist[i].Name);
}
آموزش serialize کردن اشیا
بسم الله الرحمن الرحیم
ممکن است شما بخواهید یک شی از کلاس را در یک XML فایل ذخیره کنید، برای این کار می بایست شی خود را serialize کنید.
در این آموزش نحوه serialize را بررسی خواهیم کرد.
یک پروژه جدید از نوع windows Application ایجاد کنید.
یک کلاس با نام MyClass به پروژه اضافه کنید و کد آن را به صورت زیر تغییر دهید:
public class MyClassادامه مطلب...
{
// old school property
private int _Age;
public int Age
{
get { return _Age; }
set { _Age = value; }
}
// new school property
public bool Citizen { get; set; }
// there's nothing wrong with using fields
public string Name;
}
serialize کردن به وسیله سی شارپ
بسم الله الرحمن الرحیم
در بسیاری از مواقع شما نیاز دارید یک شی را به صورت serialize ذخیره کنید، مثلا ذخیره کردن یک شی از کلاس user در کوکی و یا ذخیره کردن آن در ASP.NET Identity Claims و...
در این آموزش نحوه serialize را بررسی خواهیم کرد.
یک پروژه جدید از نوع Console Application ایجاد کنید.
یک کلاس با نام clsPerson به پروژه اضافه کنید.
Property های زیر را به کلاس اضافه کنید
public string FirstName;
public string MI;
public string LastName;
درون متد main کلاس Program.cs یک شی از کلاس clsPerson ایجاد کنید:
clsPerson p = new clsPerson();
Property های کلاس را مقدار دهی کنید
p.FirstName = "Esmaeil";
p.MI = "A";
p.LastName = "Sheidaei";
کلاس XmlSerializer برای ایجاد یک شی جدید نیاز دارد نوع شی ایی را که شما می خواهید به serialize تبدیل کنید بداند به همین دلیل ما در زمان ایجاد شی از کلاس XmlSerializer نوع p را به آن اطلاع می دهیم که طبیعتا نوع شی ما در این جا clsPerson است.
ادامه مطلب...خطا Cannot insert the value NULL into column
بسم الله الرحمن الرحیم
خطای زیر را مشاهده کنید:
Cannot insert the value NULL into column 'FirstLastName', table 'RequestSessions'; column does not allow nulls. INSERT fails.The statement has been terminated.
در مدلی که دارید کار می کنید فیلدی وجود دارد که در دیتابیس نمی تواند null باشد برای رفع این مشکل باید در اکشن خود مدل را مقدار دهی کنید
مثلا
Account.FirstLastName=”Esmaeil”;
آموزش Windows Forms Events Lifecycle
بسم الله الرحمن الرحیم
در ارتباط با Windows Form کتابها و مقالات زیادی وجود که به وسیله آن می توانید به سادگی راه و روش ایجاد یک برنامه را آموزش ببینید. در اینجا یک آموزش در خصوص ترتیب اجرای Event ها وجود دارد، اگر شما lifecycle فرم را بدانید بهتر می توانید اطلاع پیدا کنید که Event های خود را در کدام بخش بنویسید.
در مورد ASP.NET اطلاعات زیادی در خصوص ترتیب اجرا شدن Event ها وجود دارد اما در مورد Windows Form اطلاعات به سختی بدست خواهد آمد.
در ایجا لیست و ترتیب اجرای Event ها را برای شما قرار داده ام
• Move: این رویداد زمانی اتفاق می افتد که فرم تغییر مکان دهد، اما دهنگام اجرای برنامه هرچند کاربر فرم را تغییر مکاتن نمی دهد ولی این رویداد اجرا می شود.
• Load: این رویداد در اولین بار قبل از نمایش فرم اتفاق می افتد.
• VisibleChanged: این رویداد با تغییر Visible اتفاق می افتد.
• Activated: این رویداد پس از Activated شدن توسط کد یا کاربر اتفاق می افتد.
• Shown:این رویداد زمانی اتفاق می افتد که برای اولین بار فرم نمایش داده شده است.
• Paint: این رویداد در زمانی که فرم ترسیم می شود اتفاق می افتد.
• Deactivate: این رویداد در زمانی که فرم فوکس خود را از سدت یم دهد و یا فعال نیست اجرا می شود
• Closing: این رویداد در زمانی که فرم در حال بسته شدن است اتفاق می افتد.
• Closed: این رویداد در زمانی که فرم در شروع به بسته شدن می کند اتفاق می افتد.
متوقف کردن اجرای دستورات برای مدت زمان 5 ثانیه
بسم الله الرحمن الرحیم
در خصوص متوقف کردن و Sleep کردن برنامه چندین راه متفاوت وجود دارد.
با یک مثال صورت سوال را مشخص و سپس به سراغ پاسخ آن می رویم.
برنامه ای داریم که می خواهیم برای مدت زمان 5 ثانیه متوقف شود و مجددا به کار خود ادامه دهد؟
یکی از ابتدایی ترین راه ها ایجاد یک حلقه for طولانی است که به وسیله آن مدت زمانی را صرف اجرای این دستور کنید!
DateTime start = DateTime.Now;
for (int i = 1; i < 100000; i++)
{
if ((DateTime.Now - start).TotalSeconds >= 5)
break;
Console.WriteLine("This is test no. "+ i+ "\n");
}
راه دوم، بررسی زمان جاری سیستم و ذخیره آن و در نهایت ایجاد یک حلقه تا زمانی است که مدت 5 ثانیه از زمان شروع کار گذشته باشد
DateTime Tthen = DateTime.Now;ادامه مطلب...
do
{
Application.DoEvents();
} while (Tthen.AddSeconds(5) > DateTime.Now);
T4MVC
بسم الله الرحمن الرحیم
معرفی T4MVC
T4MVC می تواند بر روی نسخه های Visual Studio 2010, 2012 و 2013نصب شود وASP.NET MVC 4.0 و 5.0این Package را پشتیبانی می کنند، شاید بتوانید بر روی سایر نسخه ها از این Package استفاده کنید اما این Package فقط بر روی گزینه های گفته شده تست شده است.
نصب T4MVC
برای نصب این Package کافی است که دستور زیر را از طریق Package Manager Console اجرا کنید
Install-Package T4MVC
پس از اجرای این دستور دو فایل به پروژه شما اضافه می شود.
هدف T4MVC
این Package برای جلوگیری از نوشتن اسامی کنترلر ها و اکشن ها و در نهایت view ها به صورت Hard Code مورد استفاده قرار می گیرد.
برای مثال کدزیر را در نظر بگیرید:
<% Html.RenderPartial("DinnerForm"); %>
ما از عبارت های رشته ای برای فراخوانی این Partial استفاده کرده ایم، اگر فردا شما بخواهید این نام را تغییر دهید باید در بهترین و سریعترین روش ممکن با استفاده از Finde ویژوال استادیو تمامی نام های مربوطه را تغییر دهید.
اما چرا از ابتدا از روش دیگری استفاده نکنیم!
T4MVC در واقع نام تمامی View,Conreoller,Action ها را به صورت خودکار در خود ذخیره می کند و عملا یک Enumeration برای شما به وجود می آورد تا در آینده در صورتی که نامی را برای یک View,Conreoller,Action عوض کردید، این نام در تمامی پروژه عوض شود.
مثال:
<% Html.RenderPartial("DinnerForm"); %>
از این به بعد ما نام ها را به صورت زیر خواهیم نوشت:
<% Html.RenderPartial(MVC.Dinners.Views.DinnerForm); %>ادامه مطلب...
CodeSnippets
بسم الله الرحمن الرحیم
برای نوشتن سریعتر دستورات سی شارپ می توانید از Snippets Code استفاده کنید برای استفاده از این ویژگی کافی است کلید CTRL را به همراه K فشار دهید و سپس کلید S را نیز بزنید حال لیست دستوراتی را مشاهده می کنید که می توانید آن ها را انتخاب کنید در زیر این لیست قرار داده شده است.
برای نوشتن تمامی دستورات زیر کافی است متن نوشته شده را بنویسید و سپس دو بار کلید TAB را از روی کیبورد فشار دهید
نام دستور |
توضیحات |
if# |
|
region# |
Creates a #region directive and a #endregion directive. |
~ |
Creates a destructor for the containing class. |
attribute |
Creates a declaration for a class that derives from Attribute. |
checked |
Creates a checked block. |
class |
Creates a class declaration. |
ctor |
Creates a constructor for the containing class. |
cw |
Creates a call to WriteLine. |
do |
Creates a do while loop. |
else |
Creates an else block. |
enum |
Creates an enum declaration. |
equals |
Creates a method declaration that overrides the Equals method defined in the Object class. |
exception |
Creates a declaration for a class that derives from an exception (Exception by default). |
for |
Creates a for loop. |
foreach |
Creates a foreach loop. |
forr |
Creates a for loop that decrements the loop variable after each iteration. |
if |
Creates an if block. |
indexer |
Creates an indexer declaration. |
interface |
Creates an interface declaration. |
invoke |
Creates a block that safely invokes an event. |
iterator |
Creates an iterator. |
iterindex |
Creates a "named" iterator and indexer pair by using a nested class. |
lock |
Creates a lock block. |
mbox |
Creates a call to MessageBox.Show. You may have to add a reference to System.Windows.Forms.dll. |
namespace |
Creates a namespace declaration. |
prop |
Creates an auto-implemented property declaration. |
propfull |
Creates a property declaration with get and set accessors. |
propg |
Creates a read-only auto-implemented property with a private "set" accessor. |
sim |
|
struct |
Creates a struct declaration. |
svm |
|
switch |
Creates a switch block. |
try |
Creates a try-catch block. |
tryf |
Creates a try-finally block. |
unchecked |
Creates an unchecked block. |
unsafe |
Creates an unsafe block. |
using |
Creates a using directive. |
while |
Creates a while loop. |
جلوگیری از باز شدن چندین نسخه از نرم افزار
بسم الله الرحمن الرحیم
در بعضی نرم افزار ها شما می بایست اجازه اجرا کردن چندین نسخه از نرم افزار را از کاربر سلب نمایید.
برای اجرا کردن تنها یک نسخه از نرم افزار توسط کاربر می توان به صورت زیر عمل کنید:
فایل program.cs را باز کنید و در آن کد زیر را اضافه کنید
public static Process PriorProcess()
// Returns a System.Diagnostics.Process pointing to
// a pre-existing process with the same name as the
// current one, if any; or null if the current process
// is unique.
{
Process curr = Process.GetCurrentProcess();
Process[] procs = Process.GetProcessesByName(curr.ProcessName);
foreach (Process p in procs)
{
if ((p.Id != curr.Id) &&
(p.MainModule.FileName == curr.MainModule.FileName))
return p;
}
return null;
}
حال متد Main را به صورت زیر عوض کنید:
[STAThread]
static void Main()
{
if (PriorProcess() != null)
{
MessageBox.Show("Another instance of the app is already running.");
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form());
}
آموزش TagBuillder
بسم الله الرحمن الرحیم
آموزش asp.net mvc
یکی از روش های تولید تگ های HTML اسنفاده از کلاس TagBuilder می باشد. این کلاس خصوصیات های زیادی را ارائه می دهد که پرکاربردترین آن ها را به همراه یک مثال ارائه داده شده است.
یک کنترلر جدید با نام Sample ایجاد کنید و سپس کد زیر را به آن اضافه نمایید:
namespace ExternalHtml.Controllers
{
public class SampleController : Controller
{
public MvcHtmlString CreateTagBuilder()
{
TagBuilder tagBuilderSpan = new TagBuilder("div");
tagBuilderSpan.SetInnerText("کلمه عبور");
TagBuilder tagBuilder = new TagBuilder("input");
tagBuilder.AddCssClass("inputTypeClass");
tagBuilder.Attributes.Add("type", "password");
tagBuilder.GenerateId("input~TagBuilder");
tagBuilder.IdAttributeDotReplacement = "input_TagBuilder";//Replace ~ char with _
tagBuilder.MergeAttribute("enable", "false");//set enable with false for understand below tag
tagBuilder.MergeAttribute("enable", "true", true);//true means exist tag replace and false denial tag
tagBuilderSpan.InnerHtml += tagBuilder.ToString();
return new MvcHtmlString(tagBuilderSpan.ToString());}
//
// GET: /Sample/
public ActionResult Index()
{
ViewBag.TagBuilder= CreateTagBuilder();
return View();
}
}
}
ادامه مطلب...
آموزش User Agent
بسم الله الرحمن الرحیم
User Agent چیست
در این بخش قصد دارم یک بخش ساده از یک درخواست ارسالی از سوی یک مرورگر (کلاینت) به سمت یک سرور را معرفی کنم. در واقع هنگامی که شما یک سایت را فراخوانی می کنید، درخواست شما و سایر اطلاعات مربوط به سیستم کلاینت شما توسط یک استرینگ به نام User Agent به سمت سرور ارسال می شود.
قصد معرفی و طولانی کردن بی جهت مطلب را ندارم، انشالله در بحث های آتی کاربرد این مبحث را کاملا توضیح خواهم داد.
ادامه مطلب...ساخت Transaction در سی شارپ
بسم الله الرحمن الرحیم
آموزش برنامه نویسی آسنگرون در سی شارپ
در مطالب گذشته نحوه اجرای Transaction را در اسکیوال بیان کردم، خوب بسیاری از مزایای این کار بیان شد حال همین موارد را می توانیم در سی شارپ پیاده سازی نماییم، بدون توضیحات اضافی مثالی را بررسی می کنیم:
ادامه مطلب...