상속: Message
 static void OnSay(Say msg, IOperationContext context)
 {
     RoomMember member;
     if (RoomMembers.TryGetValue(context.ReplyChannel, out member))
     {
         List<RoomMember> members;
         if (Rooms.TryGetValue(member.RoomName, out members))
         {
             members.ForEach((m) => m.UserChannel.Send(new RoomEvent() { UserName = member.UserName, Text = msg.Text }));
         }    
     }
 }
        async Task OnSay(Say msg, IOperationContext context)
        {
            RoomMember member;
            if (RoomMembers.TryGetValue(context.ReplyChannel, out member))
            {
                RoomData room;
                if (Rooms.TryGetValue(member.RoomName, out room))
                {
                    var newEvent = new RoomEvent() {UserName = member.UserName, Text = msg.Text};
                    room.History.Add(newEvent);

                    using (var tx = StateManager.CreateTransaction())
                    {
                        await _roomsState.SetAsync(tx, room.Name, room);
                        await tx.CommitAsync();
                    }

                    room.Members.ForEach(m => m.UserChannel.Send(newEvent));
                }
            }
        }