September 20, 2012

Code Repository - Custom Exception

//------------------------------------------------------------------------------
// Created by: Pete
// Created on: Sep 10, 2012
//------------------------------------------------------------------------------

using System;
using System.Runtime.Serialization;

namespace AdventureWorks.DataAccess
{
    /// <summary>
    /// An exception thrown when errors occur in the repository class
    /// </summary>
    [Serializable]
    public class RepositoryException : Exception
    {
        public RepositoryException()
        {
        }

        public RepositoryException(string message)
            : base(message)
        {
        }

        public RepositoryException(string message, Exception innerException)
            : base(message, innerException)
        {
        }

        protected RepositoryException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
        }
    }
}

備註
  1. [Serializable]這個attribute必須加入,否則無法序列化
  2. Protected RepositoryException(SerializationInfo info, StreamingContext context) : base(info, context)必須加入,否則無法反序列化
  3. 如果有自訂property於例外類別中,則必須額外再實作ISerializable的public void GetObjectData(SerializationInfo info, StreamingContext context)方法

Code Repository - XML Serialization Helper

XmlSerializationHelper.cs

September 19, 2012

自訂Visual Studio樣版參數

接續修改Visual Studio內建樣版一文,檢視一下Class.cs檔案
using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
$endif$using System.Text;

namespace $rootnamespace$
{
 class $safeitemrootname$
 {
 }
}

VS的樣版提供了一些預設參數如上述範例的$rootnamespace$,如果需要的話也可自訂參數。

September 14, 2012

修改Visual Studio內建樣版

團隊開發時,我們常會需要遵循一些開發原則或coding standard/convention。例如在類別中,檔案最上方需要加入一些針對類別的描述文字如
//------------------------------------------------------------------------------
// Description: A generic repository that should be derived in domain repositories
// Created by: Pete
// Created on: Sep 10, 2012
//------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

通常很常見的作法就是加入一個新類別後,再去找一個已存在專案中的類別,複制它的描述後再貼到這個新建的類別中,每建一個新類別這樣的複制貼上動作就要再做一次。何不去修改內建的VS樣版,讓我們在新增新類別時幫我們自動加上一些基本的說明呢?

以下步驟說明如何透過修改類別的內建樣板加入上述的描述文字