Chain.NET (NChain) 是責任鏈模式 在 .NET 與 Mono 平台上的實作,版本 0.1 已發布於 SourceForge。它結合標準責任鏈與命令模式,旨在為「基於命令處理的功能提供方便且靈活的解決方案」。
設計靈感源自 Java 平台的 Jakarta Commons Chain 套件。核心思想:從一系列處理單元中解耦命令物件,每個處理單元聲明可接受的命令類型,並將不匹配的命令委派給鏈中下一個處理單元。
using System;
using System.Collections;
namespace Chain_of_responsibility
{
public interface IChain { bool Process(object command); }
public class Chain
{
private ArrayList _list = new ArrayList();
public void Message(object command)
{
foreach (IChain item in _list)
if (item.Process(command)) break;
}
public void Add(IChain handler) { _list.Add(handler); }
}
public class StringHandler : IChain
{
public bool Process(object command)
{
if (command is string)
{
Console.WriteLine("StringHandler: {0}", command);
return true;
}
return false;
}
}
public class IntegerHandler : IChain
{
public bool Process(object command)
{
if (command is int)
{
Console.WriteLine("IntegerHandler: {0}", command);
return true;
}
return false;
}
}
class TestMain
{
static void Main()
{
Chain chain = new Chain();
chain.Add(new StringHandler());
chain.Add(new IntegerHandler());
chain.Message("1st string value");
chain.Message(100);
}
}
}

NChain 提供更健壯的架構,支援:
專案為開源,提供入門範例。尚需更多測試與效能基準測試以驗證企業級適用性。對於採用命令模式且需上下文相關執行邏輯的系統,NChain 具備潛力。