If you take a deeper look at agile manifesto:

  1. Individuals and interactions over processes and tools
  2. Working software over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan


You will find out that it's all about a way of good thinking and culturing. agile allows for organic changes and improvements along the way, even to project specifications.  agile dictates that communicat

Patterns of Enterprise Application Architecture by Martin Fowler is one the most famous book about the patterns and software architecture. I've read this book and it's still one the best source for me when I'm going to choose the best patterns and architecture for my solutions. It's a book for designing the multi-tiered object oriented platforms, such as java and Microsoft Dot Net. It's too important to design your application based on standard architectures and patterns.

If you want to be a real software architect I recommend to completely this book.

This book is available here to purchase, I've read this book only for once! As I'm really interested in to DDDesign, I'm planning to read it for several times. Just try to read this book and complete it! It's a little bit dry book but is the best resource for Domain Driven Design. it provides a broad framework for making design decisions and a technical vocabulary for discussing domain design. As you can see in amazon and, lots of heroes have been talked about this b

Take a look at AttributeTargets in System namespace:

  1. namespace System
  2. {
  3.     [Serializable]
  4.     [ComVisible(true)]
  5.     [Flags]
  6.     public enum AttributeTargets
  7.     {
  8.              Assembly = 1,
  9.              Module = 2,
  10.              Class = 4,
  11.              Struct = 8,
  12. &n

To be frank I heard about Roslyn a few days ago. if you watch this presentation by Andres Hejlsberg, you will also find out that It's going to be a big jump in .NET platform. Roslyn is a project that extends the capability of the compiler by giving the developers to access them.  access to the compiler means that the developer can easily extend it and optimize some parts of the process by being able to directly interact with code that is being manipulated. It provides a set of API for extending the C# and visua

I'm interested in to share these samples about different kinds of joins via LINQ. have fun!

  1.     public class Brand
  2.     {
  3.         public int Id { get; set; }
  4.         public string Name { get; set; }
  5.     }
  7.     public class Category
  8.     {
  9.         public int Id { get; set; }
  10.         public string Name { get; set; }
  11.     }

ConcurrentDictionary is a type from .NET 4.0 and System.Collections.Concurrent namespace for handling multiple threads. It allows multiple threads to access a dictionary instance concurrently. This Type makes adding, removing and updating values in a lookup table on multiple threads easier. It's actually a thread safe version of Dictionary collection type that you don’t need to use synchronization. Most of the methods in ConcurrentDictionary are the same as Dictionary methods, but there are some extra methods that I'm gonna to explain them:


When you define a generic class, you can apply the generic type independent on a certain feature. In other word you help the client code by using constraint to not got error when instantiate the base Type which is not allowed in constraint condition. By constraining the type parameter, you increase the number of allowable operations and method calls to those supported.

Different kinds of constraints could be like these:

  1. Where T: Class
  2. Where T: struct
  3. Where T: new()
  4. Where T:<ClassName> , ne

Do you know how .Net mechanism stores your object in memory? I don't know! But we should know how to store the content of an object into a file (in the simplest form) or transfer the object between a network, passing an object from one domain to another, sending the object to a remote application by means of a Web Service , Rest, and so on. To do more security you should convert the content into different format and after the operation re-convert it to the same format. This operation is called Serialization. Sterilization in an operation defined in .Net, it's all ab

Today I heard about Extern keyword in C# for the first time by one of my colleague. it actually eliminates conflicts. It provides a way for you to differentiate between different physical locations of the same class name.  For example you have two separate project in your solution with name of ClassLibrary1 and ClassLibrary2 and also you have two class with the same name and also in the same namespace, like this:


(This is in ClassLibrary1 project)

  1. namespace ClassLibrary1
  2. { Continue