بازخوردهای پروژه‌ها
Fill and FillByObject
متود زیر برای تولید عبارت مبتنی بر الگو زمانی که الگو پیچیده‌تر از این است که بشود با string.Format به راحتی پیاده سازی شود ولی چندان هم پیچیده نیست که ابزارهای حرفه ای‌تری مانند T4 یا Razor به کار بیایند، میتواند مورد استفاده قرار گیرد:
        /// <summary>
        /// Insert values from an object into a string pattern. To specify the object's property you have to use the '{propertyName}'.
        /// </summary>
        /// <remarks>
        /// This method is a replacement to String.Format, but it has two differences:
        /// <list type="simple">
        /// <item>It reverese the order you call the functionality, instead of writing String.Format(pattern, args) you write pattern.FillByObject(args). This makes the code look cleaner.</item>
        /// <item>You supply the pattern with an object and specify insertion points by property names.</item>
        /// </list>
        /// <example>
        /// <![CDATA[
        /// "First name:{firstName}, Sur name:{Surname}".FillByObject(new {firstName = "Sam", lastName="Naseri"});
        /// ]]>
        /// </example>
        /// </remarks>
        /// <seealso cref="Fill"/>
        /// <typeparam name="T">Type of bindingValue.</typeparam>
        /// <param name="bindingPattern">The pattern to fill.</param>
        /// <param name="bindingValue">The object providing values to fill in the pattern.</param>
        /// <returns>The pattern filled with values.</returns>
        public static string FillByObject<T>(this string bindingPattern, T bindingValue)
        {
            var properties = GetProperties(typeof(T)).ToList();
            var values = properties.Select(property => property.GetValue(bindingValue, new object[] { })).ToList();
            var result = bindingPattern;
            for (int index = 0; index < properties.Count; index++)
            {
                var property = properties[index];
                var propPattern = "{" + property.Name + "}";
                var old = result;
                result = result.Replace(propPattern, values[index] != null ? values[index].ToString() : "");
            }
            return result;
        }

پیاده سازی فوق یک پیاده سازی بسیار خام و بسیار کند است و جای بهبود زیادی دارد. من فقط برای سناریوهای ساده که کارایی مطرح نیست استفاده از متود فوق را توصیه میکنم.
متودهای جانبی مورد نیاز:
private static IEnumerable<PropertyInfo> GetProperties(Type t)
{
    return t.GetProperties(BindingFlags.Public | BindingFlags.Instance);
}

همچنین متود زیر هم میتواند نوشتن string.Format را یک خرده ساده‌تر کند:
/// <summary>
/// A simple replacement for String.Format which only makes the codes look nicer.
/// </summary>
/// <param name="pattern">The source string that you want to replace insertion points on it.</param>
/// <param name="args">Values to be replaced in the pattern.</param>
/// <returns></returns>
public static string Fill(this string pattern, params object[] args)
{
    return string.Format(pattern, args);
}

اشتراک‌ها
سایتی برای پادکست های سخت افزاری

Hanselminutes and CodeNewbie are teaming up to produce two episodes a week for the month of March, featuring incredible makers in the hardware space.
There will be new content every weekday in March, so subscribe and join us daily.  

سایتی برای پادکست های سخت افزاری
اشتراک‌ها
15 تکنیک سودمند CSS
  you have been a frontend web developer for a while, there is a high chance that you have had a moment when you were trying to find out how to code something and realised after a bit of googling, that "there is CSS for that". If you hadn’t, well you are about to. 
15 تکنیک سودمند CSS
نظرات مطالب
استفاده از jQuery یا‌ MS Ajax control toolkit
سلام
من مطلب جالبی از نویسنده کتاب Asp.net MVC خواندم که طبق تحقیقات انجام شده توسط ماکروسافت است:
اونها به Asp.net عبارت Bloated را دادند و این به این معنی است:

The term bloated is often thrown at frameworks or technologies that either:

People don’t understand or aren’t completely aware of and don’t want to take the time to learn

Come from a provider people don’t respect or like

People have heard bad things about

Are actually bloated

و این نظریه که اغلب مردم نسبت به Asp.net Ajax دارند.
اشتراک‌ها
کتاب کار با XML در SQL Server

Stairway to XML

XML has been part of the SQL Standard since 2003, and is essential for any DBA because so many of the dynamic management views return XML data. Now that the industry is more used to data defined by document markup, it is becoming more important than ever for Database Developers and DBAs to understand the technology and to know where it makes sense to use XML. In this book, originally a series of articles on SQLServerCentral.com, Robert Sheldon flexes his talent to make the complicated seem simple. 

کتاب کار با XML در SQL Server
اشتراک‌ها
معرفی Nuget 3.4.3

Today, we are releasing the 3.4.3 RTM version of the NuGet Visual Studio 2015 extension and the Windows x86 commandline executable. We continue to heavily invest in improving the quality of NuGet scenarios in Visual Studio and commandline. The complete list of issues fixed in this version is available on GitHub. In this post, we will review the important changes in 3.4.3 release. 

معرفی Nuget 3.4.3
اشتراک‌ها
معرفی NET Community Toolkit.

CommunityToolkit/dotnet: .NET Community Toolkit is a collection of helpers and APIs that work for all .NET developers and are agnostic of any specific UI platform. The toolkit is part of the .NET Foundation. 

معرفی NET Community Toolkit.