オブジェクトにパッケージ タイプを定義する int があると仮定すると、列挙型を使用してこれらの整数に名前を付け、ハンドラーを次のようにディクショナリに格納するのは簡単です。
public enum PackageType
{
LOGIN_AUTH = 23,
// More enum members here
}
class Package
{
public int Id { get; set; }
public PackageType Type { get { return (PackageType) Id; }}
}
class SomeClass
{
IDictionary<PackageType, Action<Type>> _dictionaryPacketHandlers = new Dictionary<PackageType, Action<Type>>()
{
{PackageType.LOGIN_AUTH, package => { /* Logic here */ }},
// More handlers here
};
}
これで、次のように使用できます。
public void SomeMethod(Package package)
{
_dictionaryPacketHandlers[package.Type](package);
}