بررسی چک لیست امنیتی web.config
Solution template generator
connection.Insert(new Car { Name = "Volvo" });
connection.Update(new Car() { Id = 1, Name = "Saab" });
connection.Delete(new Car() { Id = 1 });
طی سالهای مختلف برنامهنویسی و گاهی استفاده از زبانهای مختلف ممکن است باعث شده باشد ما به طور ناخواسته به «دستخطی» غیر استاندارد دست یافته باشیم و به سیستمی که بیشتر برای خود ما آشنا باشد کد بزنیم. البته که چنین سیستمی به خودی خود بد نیست اما چون دیگران با آن آشنا نیستند میتواند خواندن و مرور کدها را با مشکل جدی مواجه کند. با رعایت بیشتر اصول و قواعد معرفی شده در هر زبان میتوان تا جای ممکن کدهای خواناتر و قابل ارائهتری ارائه دهیم.
در این مطلب که نکاتی نه چندان ناآشنا ولی لازم جهت نامگذاری، استفاده از کلمه کلیدی var و همچنین اضافه شدن کلمات کلیدی جدیدی همچون record را در c# مرور کنیم. به طور مثال:
روش صحیح استفاده از var:
var var1 = "This is clearly a string";
روش غلط استفاده از var:
int var4 = ExampleClass.ResultSoFar();
آشنایی با Refactoring - قسمت 7
در مورد مطلبی که گفتید، بله میشود. در این حالت باید DataObject TypeName مربوط به ObjectDataSource را مشخص کنید: [^]
اگر میخواهید واقعا این اصول شیءگرایی را رعایت کنید، بهتر است به ASP.NET MVC کوچ کنید. Model binder آن، خودش به صورت خودکار این موارد را پوشش میدهد. نگارش بعدی ASP.NET Webforms هم کمی تا قسمتی از این Model binder رو به ارث برده ولی نه آنچنان که یک strongly typed view رو بتونید باهاش 100 درصد مثل MVC تعریف کنید.
در کل معماری ASP.NET Webforms مربوط به روزهای اول دات نت است و به نظر هم قرار نیست آنچنان تغییری بکند. به همین جهت MVC رو این وسط معرفی کردهاند.
EF Code First #12
6 اصول کمتر شناخته شده CSS
خلاص شدن از شر deep null check
public class Customer { public CustomerInfo Info { get; set; } public Int32 GetNameLength() { return this.IfNotDefault(city => city.Info) .IfNotDefault(info => info.CityInfo) .IfNotDefault(cityInfo => cityInfo.Name) .IfNotDefault(name => name.Length); } } public class CustomerInfo { public CustomerCityInfo CityInfo { get; set; } } public class CustomerCityInfo { public String Name { get; set; } }
Customer customer = new Customer(); String cityName = customer .IfNotDefault(cust => cust.Info) .IfNotDefault(info => info.CityInfo) .IfNotDefault(city => city.Name); Int32 length = customer.GetNameLength();
public static TValue GetValue<TObj, TValue>(this TObj obj, Func<TObj, TValue> member, TValue defaultValueOnNull = default(TValue)) { if (member == null) throw new ArgumentNullException("member"); if (obj == null) throw new ArgumentNullException("obj"); try { return member(obj); } catch (NullReferenceException) { return defaultValueOnNull; } }
public class Customer { public CustomerInfo Info { get; set; } public Int32 GetNameLength() { return this.Info.CityInfo.Name.Length; } } public class CustomerInfo { public CustomerCityInfo CityInfo { get; set; } } public class CustomerCityInfo { public String Name { get; set; } }
Customer customer = new Customer(); String cityName = customer.GetValue(cust => cust.Info.CityInfo.Name, "Not Selected"); Int32 i = customer.GetValue(cust => cust.GetNameLength());
ابتدا یک سرویس به نام BaseService ایجاد کنید:
angular.module('myApp').service('BaseService', function() { var BaseService = function(title) { this.title = title; }; BaseService.prototype.getMessage = function() { var self = this; return 'Hello ' + self.title; }; return BaseService; });
حال اگر ماژول و کنترلری جهت نمایش خروجی به صورت زیر ایجاد کنیم:
var app= angular.module('myApp', []); app.controller('myCtrl', function ($scope,BaseService) { var instance = new BaseService('Masoud'); $scope.title = instance.getMessage(); });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ng-app="myApp"> <head> <title></title> </head> <body ng-controller="myCtrl"> <div> {{title}} </div> </body> <script src="Scripts/jquery-2.1.1.min.js"></script> <script src="Scripts/angular.js"></script> <script src="App/app.js"></script> </html>
تا اینجای کار روال معمول تعاریف سرویس در انگولار بوده است. اما قصد داریم سرویس جدیدی را ایجاد نمایم تا خروجی سرویس قبلی را اندکی تغییر دهد. به جای اینکه سرویس قبلی را تغییر دهیم یا بدتر از آن سرویس جدیدی بسازیم و کدهای قبلی را در آن کپی کنیم کافیست به صورت زیر عمل نماییم:
app.service('ExtService', function(BaseService) { var ExtService = function() { BaseService.apply(this, arguments); }; ExtService.prototype = new BaseService(); ExtService.prototype.getMessage = function() { var self = this; return BaseService.prototype.getMessage.apply(this, arguments) + ' From Ext Service'; }; return ExtService; });
app.controller('myCtrl', function ($scope,BaseService , ExtService) { var baseInstance = new BaseService('Masoud'); var extInstance = new ExtService('Dotnettips'); $scope.title = baseInstance.getMessage() + ' and ' + extInstance.getMessage(); });