بازخوردهای دوره
تزریق خودکار وابستگی‌ها در برنامه‌های ASP.NET MVC

با سلام

در استفاده عادی و بدون structureMap مشکلی ندارم اما زمانی که از StructureMap  استفاده می‌کنم

در کلاس DefaultControllerFactory در متد GetControllerInstance مقدار controllerType برای Area‌ها null برمی گردد

همون طور کد خدمتتون عرض کردم در حالت عادی و بدون structormap مشکلی وجود ندارد و کلی مسیر دهی‌ها به درستی انجام می شود ولی در زمان استفاده از Ioc با Area‌ها مشکل دارم.

در اینجا مطلبی دیدم که مسیردهی‌ها را از طریق یک Super کلاس انجام داده اند که فکر نمی‌کنم مسیردهی مجدد کار درستی باشد و از طرفی super کلاس من بین کنترل‌های Area و کنترل‌های خارج از Area مشترک است و نمی‌تونم همچین کاری انجام بدم.

چرا در GetControllInstance مقدار controllerType در زمان استفاده از structoremap برای مسیرها و کنترل‌های موجود در Area‌ها null است در حالتی که بدون استفاده از آن مسیردهی به درستی انجام می‌شود

اشتراک‌ها
فرق بین String.IsNullOrEmpty و String.IsNullOrWhiteSpace در چیست؟

C# tip: String.IsNullOrEmpty or String.IsNullOrWhiteSpace?  

//So we have:

String.IsNullOrEmpty(""); //True
String.IsNullOrEmpty(null); //True
String.IsNullOrEmpty("   "); //False
String.IsNullOrEmpty("\n"); //False
String.IsNullOrEmpty("\t"); //False
String.IsNullOrEmpty("hello"); //False

//but also

String.IsNullOrWhiteSpace("");//True
String.IsNullOrWhiteSpace(null);//True
String.IsNullOrWhiteSpace("   ");//True
String.IsNullOrWhiteSpace("\n");//True
String.IsNullOrWhiteSpace("\t");//True
String.IsNullOrWhiteSpace("hello");//False
فرق بین String.IsNullOrEmpty و String.IsNullOrWhiteSpace در چیست؟
اشتراک‌ها
ساختار جدید HashCode در NET Core 2.1.

پیشتر برای محاسبه‌ی هش اشیاء، از یک چنین روشی استفاده می‌شد:

public override int GetHashCode()
{
    unchecked
    {
        int hashCode = 17; 
        hashCode = (hashCode * 23) + (name == null ? 0 : this.name.GetHashCode()); 
        hashCode = (hashCode * 23) + this.age; 
        foreach (string power in this.powers)
        {
            hashCode = (hashCode * 23) + (power == null ? 0 : power.GetHashCode());
        } 
        return hashCode;
    }
}
اکنون با استفاده از ساختار جدید HashCode در NET Core 2.1.، بجای آن می‌توان نوشت:
public override int GetHashCode()
{
    var hash = new HashCode();
    hash.Add(this.object1);
    hash.Add(this.object2);
    return hash.ToHashCode();
}
ساختار جدید HashCode در NET Core 2.1.
اشتراک‌ها
بررسی تغییرات NET Framework 4.7.1.

Compiler – Support for ReadOnlyReferences

class Type1
{
   // This parameter will have an attribute (in IL) of type `IsReadOnly`
   public void Method1(ref readonly int param1) { throw null; }

   // This method return type will have an attribute (in IL) of type `IsReadOnly`
   public ref readonly int Method2() { throw null; }
}

بررسی تغییرات NET Framework 4.7.1.
اشتراک‌ها
آیا Null یک نوع داده‌ایی است؟

In C#, null has no type, but most variables can be null; you can't really trust the type system. A Maybe, on the other hand, always has a type, which means that Maybe is a saner approach to the question of values that may or may not be present. 

آیا Null یک نوع داده‌ایی است؟
نظرات مطالب
روش صحیح تعریف قلم در iTextSharp
با سلام
برای یک سری از فونت‌ها برای مثال IRANSans بعد از Register کردن مقدار برگشتی null هست. در حالت  BaseFont . EMBEDDED و همچنین   BaseFont.NOT_EMBEDDED هم چک کردم. آیا به لایسنس فونت مربوط است ؟
   public iTextSharp.text.Font GetIRANSans()
        {
            var fontName = "IRANSans(FaNum)_Medium";
            if (!FontFactory.IsRegistered(fontName))
            {
                var fontPath = Path.Combine(_hostingEnvironment.WebRootPath + @"\FontPdf\IRANSans(FaNum)_Medium.ttf");
                FontFactory.Register(fontPath);
            }
            return FontFactory.GetFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        }
  var baseFont = GetIRANSans().BaseFont; // null 

نظرات مطالب
Soft Delete در Entity Framework 6
معادل IsQueryType  در EF Core 3 چست؟
 private void ConfigureQueryFilters<TEntity>(ModelBuilder modelBuilder, IMutableEntityType entityType) where TEntity : class
        {
            if (entityType.BaseType != null || !ShouldFilterEntity<TEntity>()) return;

            var filterExpression = BuildFilterExpression<TEntity>();
            if (filterExpression == null) return;

            if (entityType.IsQueryType)
                modelBuilder.Query<TEntity>().HasQueryFilter(filterExpression);
            else
                modelBuilder.Entity<TEntity>().HasQueryFilter(filterExpression);
        }

نظرات مطالب
شروع به کار با DNTFrameworkCore - قسمت 5 - مکانیزم Eventing و استفاده از سرویس‌های موجودیت‌ها
با فرض اینکه ILogger یکی از وابستگی‌های ضروری کلاس موردنظر بوده است، هدف، برخورد defensive و متوجه شدن مشکلات ناشی از عدم ثبت صحیح سرویس مذکور در سیستم DI یا همان IoC Container و رفع آن می‌باشد. با این حال اگر بحث Logging یکی از وابستگی‌های اختیاری کلاس شما بود، استفاده از Null Object Pattern پیشنهاد می‌شود. 
همچنین روش دیگر، استفاده از Property Injection (فعلا توسط IoC Container توکار پشتیبانی نمی‌شود) برای این وابستگی‌های اختیاری و ترکیب آن با Null Object Pattern می‌باشد