داستان ظهور و سقوط Ext JS
int a = default(int);
var number = default(int); // 0 var date = default(DateTime); // DateTime.MinValue var obj = default(object); // null
int a = default; // 0 Guid guid = default; // 00000000-0000-0000-0000-000000000000
مثالهایی از default Literals در C# 7.1
C# 7.1 | C# 7.0 | |
int i = default; | int i = default(int); | Local Variable Defaults |
Person Create() => default; | Person Create() => default(Person); | Local function |
Person Create(string name, int age = default) | Person Create(string name, int age = default(int)) | Optional Parameter Default Value |
(string Name, int Age) person = ("User 1", default); | (string Name, int Age) person = ("User 1", default(int)); | Tuple Element Default Value |
Person p = new Person { Name = default, Age = default }; | Person p = new Person { Name = default(string), Age = default(int) }; | Object Initializer Default Value |
var people = new[] { new Person(), default, new Person() }; var ages = new[] {18, default, 50}; | var people = new[] { new Person(), default(Person), new Person() }; var ages = new[] {18, default(int), 50}; | Array Initializer Default Value |
int i = default; Console.WriteLine(i is default); | int i = default(int); Console.WriteLine(i is default(int)); // true | Is Operator |
// Local method returning a tuple (T, T) CreateTwo<T>() => (default, default); | // Local method returning a tuple (T, T) CreateTwo<T>() => (default(T), default(T)); | Generic Defaults |
bool IsAnswerKnown()=> false; int? p = IsAnswerKnown() ? 42 : default; | bool IsAnswerKnown()=> false; int? p = IsAnswerKnown() ? 42 : (int?)null; | Conditional Operator Defaults |
در این مثالها مفهوم type inference را بهتر میتوان مشاهده کرد. برای مثال در آرایهی ذیل چون اعضای آن int هست، مقدار default نیز به همان مقدار پیشفرض int اشاره میکند و همچنین نوع آرایه نیز int درنظر گرفته میشود و نیازی به ذکر آن نیست:
var ages = new[] {18, default, 50};
var ages = new[] { default };
نمونهی دیگر آن قطعه کد ذیل است:
string s = default; if(s == default) { }
و یا در مقایسهی ذیل 1.5 یک عدد double است. بنابراین default در اینجا به مقدار پیشفرض double و یا 0.0 اشاره میکند:
int a = default; var x = a > 0 ? default : 1.5;
خطا در زمان استفاده از پروفایلر
پیرو کامنت مورد نظر
[NotSupportedException: Specified method is not supported.] EFCache.CachingReader.GetSchemaTable() +28 System.Data.ProviderBase.SchemaMapping..ctor(DataAdapter adapter, DataSet dataset, DataTable datatable, DataReaderContainer dataReader, Boolean keyInfo, SchemaType schemaType, String sourceTableName, Boolean gettingData, DataColumn parentChapterColumn, Object parentChapterValue) +76 System.Data.Common.DataAdapter.FillMappingInternal(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 schemaCount, DataColumn parentChapterColumn, Object parentChapterValue) +94 System.Data.Common.DataAdapter.FillMapping(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 schemaCount, DataColumn parentChapterColumn, Object parentChapterValue) +156 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue) +79 System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) +309 System.Data.Common.LoadAdapter.FillFromReader(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) +19 System.Data.DataSet.Load(IDataReader reader, LoadOption loadOption, FillErrorEventHandler errorHandler, DataTable[] tables) +157 DNTProfiler.EntityFramework.Core.DatabaseInterceptor.ReaderExecuted(DbCommand command, DbCommandInterceptionContext`1 interceptionContext) +224 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<Reader>b__e(IDbCommandInterceptor i, DbCommand t, DbCommandInterceptionContext`1 c) +13 System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch(TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed) +679 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext) +402 System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior) +166 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) +10 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) +36 [EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details.] System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) +103 System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute(ObjectContext context, ObjectParameterCollection parameterValues) +758 System.Data.Entity.Core.Objects.<>c__DisplayClass7.<GetResults>b__6() +90 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction(Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) +288 System.Data.Entity.Core.Objects.<>c__DisplayClass7.<GetResults>b__5() +154 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Func`1 operation) +190 System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) +283 System.Data.Entity.Core.Objects.ObjectQuery`1.Execute(MergeOption mergeOption) +31 System.Data.Entity.Core.Objects.DataClasses.EntityReference`1.Load(MergeOption mergeOption) +139 System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.DeferredLoad() +350 System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.LoadProperty(TItem propertyValue, String relationshipName, String targetRoleName, Boolean mustBeNull, Object wrapperObject) +85 System.Data.Entity.Core.Objects.Internal.<>c__DisplayClass7`2.<GetInterceptorDelegate>b__2(TProxy proxy, TItem item) +105 System.Data.Entity.DynamicProxies.UserRole_BBC6827DA8A54908B2FEB0549B390716893C3DEEF1E93323EDC9D94ABC0097E1.get_Role() +33 SmartMarket.Services.Members.<>c.<IsInRole>b__9_0(UserRole x) in D:\Bazar\IEM\Dev\Libraries\TikaSoft.SmartMarket.Services\Members\UserExtentions.cs:252 System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +164 System.Linq.<DistinctIterator>d__63`1.MoveNext() +220 System.Linq.WhereEnumerableIterator`1.MoveNext() +77 System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source, Func`2 predicate) +94 SmartMarket.Services.Members.UserExtentions.IsInRole(User user, String roleSystemName, Boolean onlyActiveRoles) in D:\Bazar\IEM\Dev\Libraries\TikaSoft.SmartMarket.Services\Members\UserExtentions.cs:252 SmartMarket.Services.Members.UserExtentions.IsRegistered(User user, Boolean onlyActiveRoles) in D:\Bazar\IEM\Dev\Libraries\TikaSoft.SmartMarket.Services\Members\UserExtentions.cs:277 SmartMarket.Services.Authentication.FormsAuthenticationService.GetAuthenticatedUser() in D:\Bazar\IEM\Dev\Libraries\TikaSoft.SmartMarket.Services\Authentication\FormsAuthenticationService.cs:66 SmartMarket.Web.Framework.WebWorkContext.get_CurrentUser() in D:\Bazar\IEM\Dev\Presentation\TikaSoft.SmartMarket.Web.Framework\WebWorkContext.cs:167 SmartMarket.Web.Framework.Controllers.SmartController.LogException(Exception exc) in D:\Bazar\IEM\Dev\Presentation\TikaSoft.SmartMarket.Web.Framework\Controllers\SmartController.cs:221 SmartMarket.Web.Framework.Controllers.SmartController.OnException(ExceptionContext filterContext) in D:\Bazar\IEM\Dev\Presentation\TikaSoft.SmartMarket.Web.Framework\Controllers\SmartController.cs:132 System.Web.Mvc.Controller.System.Web.Mvc.IExceptionFilter.OnException(ExceptionContext filterContext) +10 System.Web.Mvc.ControllerActionInvoker.InvokeExceptionFilters(ControllerContext controllerContext, IList`1 filters, Exception exception) +109 System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__19(AsyncCallback asyncCallback, Object asyncState) +721 System.Web.Mvc.Async.WrappedAsyncResult`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +14 System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128 System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +343 System.Web.Mvc.Controller.<BeginExecuteCore>b__1c(AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState) +25 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +30 System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128 System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state) +465 System.Web.Mvc.Controller.<BeginExecute>b__14(AsyncCallback asyncCallback, Object callbackState, Controller controller) +18 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +20 System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128 System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +374 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +16 System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(AsyncCallback asyncCallback, Object asyncState, ProcessRequestState innerState) +52 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +30 System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +384 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +443 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +157
protobuf-net is a contract based serializer for .NET code, that happens to write data in the "protocol buffers" serialization format engineered by Google. The API, however, is very different to Google's, and follows typical .NET patterns (it is broadly comparable, in usage, to XmlSerializer, DataContractSerializer, etc). It should work for most .NET languages that write standard types and can use attributes.
Nuget Package : https://www.nuget.org/packages/protobuf-net
We're going to use Dapper.NET on our project; that much is not in doubt. However, we're not going to start development with it, and it will not be the only ORM in use. The plan is to develop this project using Entity Framework, and later optimize to use Dapper.NET in certain scenarios where the system needs a performance boost.
JSON.stringify({}); // '{}' JSON.stringify(true); // 'true' JSON.stringify('foo'); // '"foo"' JSON.stringify([1, 'false', false]); // '[1,"false",false]' JSON.stringify({ x: 5 }); // '{"x":5}' JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)) // '"2006-01-02T15:04:05.000Z"' JSON.stringify({ x: 5, y: 6 }); // '{"x":5,"y":6}' or '{"y":6,"x":5}' JSON.stringify([new Number(1), new String('false'), new Boolean(false)]); // '[1,"false",false]' JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] }); // '{"x":[10,null,null,null]}' // Symbols: JSON.stringify({ x: undefined, y: Object, z: Symbol('') }); // '{}' JSON.stringify({ [Symbol('foo')]: 'foo' }); // '{}' JSON.stringify({ [Symbol.for('foo')]: 'foo' }, [Symbol.for('foo')]); // '{}' JSON.stringify({ [Symbol.for('foo')]: 'foo' }, function(k, v) { if (typeof k === 'symbol') { return 'a symbol'; } }); // '{}' // Non-enumerable properties: JSON.stringify( Object.create(null, { x: { value: 'x', enumerable: false }, y: { value: 'y', enumerable: true } }) ); // '{"y":"y"}'
در مورد «درست کردن فایل راهنمای CHM از توضیحات XML یک پروژه» پیشتر مطلبی در این سایت منتشر شده است. تمام اینها هم خوب! اما فایل راهنمای نهایی تولیدی یک ایراد مهم دارد. Sandcastle Help File Builder نیاز دارد که به ازای هر فضای نامی که در پروژهی شما وجود دارد، یک summary و توضیح هم ارائه شود؛ در غیر اینصورت خطای قرمز رنگ زیر را در ابتدای صفحه معرفی کلاسهای یک فضای نام، نمایش خواهند داد:
[Missing <summary> documentation for "N:Some.Test"]
از آنطرف کامپایلرهای مورد استفاده چنین توضیحاتی را قبول ندارند و نمیتوان برای فضاهای نام، توضیحاتی را همانند کلاسها یا متدها، ارائه داد. برای حل این مشکل، یک راه حل ساده وجود دارد: به ازای هر فضای نامی که در پروژه وجود دارد، یک کلاس خالی را به نام "NamespaceDoc" به پروژه اضافه کنید. مثلا:
namespace Some.Test
{
/// <summary>
/// The <see cref="Some.Test"/> namespace contains classes for ....
/// </summary>
[System.Runtime.CompilerServices.CompilerGenerated]
class NamespaceDoc
{
}
}
به این ترتیب توضیحاتی که ملاحظه میکنید توسط Sandcastle Help File Builder مورد استفاده قرار خواهد گرفت و آن اخطارهای قرمز رنگ عدم وجود توضیحات مرتبط با فضاهای نام، از فایل تولیدی نهایی حذف خواهند شد.
روش دوم:
در خود برنامه Sandcastle Help File Builder، در قسمت Project Properties > Comments > NameSpaceSummaries، امکان وارد کردن توضیحات فضاهای نام نیز وجود دارد. (که آنچنان جالب نیست؛ بهتر است همه چیز یکپارچه باشد.)
EF Code First #3
- کلیه سفارشی سازیهای ویژه توسط Fluent API قابل انجام هستند:
// How to rename complex type to not having the prefix of the class name modelBuilder .ComplexType<InterestComponent>() .Property(type => type.Interest1) .HasColumnName("Interest1");