public void Protocol_Logic(IProtocol protocol, TcpClientHandler handler) { Action <IProtocol, TcpClientHandler> action; if (HandlePool.TryGetValue(protocol.GetProtocol_ID(), out action)) { action(protocol, handler); } }
public void Register() { var baseType = typeof(IProtocol); var a = Assembly.GetAssembly(baseType).GetTypes().Where(t => baseType != t && baseType.IsAssignableFrom(t)); foreach (var b in a) { IProtocol instance = (IProtocol)Activator.CreateInstance(b); protocolPool.Add(instance.GetProtocol_ID(), instance); } }