|
5 | 5 | namespace Cyan |
6 | 6 | { |
7 | 7 |
|
8 | | - static Cyan::Reflection<IMessage> factory_; |
9 | | - |
10 | | - MessageChain::MessageChain() :messages_(), messageId_(0), timestamp_(0) |
| 8 | + Cyan::Reflection<IMessage>& GetMessageReflection() |
11 | 9 | { |
12 | | - if (factory_.size() <= 0) |
| 10 | + static Cyan::Reflection<IMessage> reflection; |
| 11 | + if (reflection.size() <= 0) |
13 | 12 | { |
14 | | - factory_.Register<PlainMessage>("Plain"); |
15 | | - factory_.Register<ImageMessage>("Image"); |
16 | | - factory_.Register<FlashImageMessage>("FlashImage"); |
17 | | - factory_.Register<AtMessage>("At"); |
18 | | - factory_.Register<AtAllMessage>("AtAll"); |
19 | | - factory_.Register<AppMessage>("App"); |
20 | | - factory_.Register<JsonMessage>("Json"); |
21 | | - factory_.Register<XmlMessage>("Xml"); |
22 | | - factory_.Register<FaceMessage>("Face"); |
23 | | - factory_.Register<PokeMessage>("Poke"); |
24 | | - factory_.Register<QuoteMessage>("Quote"); |
25 | | - factory_.Register<FileMessage>("File"); |
26 | | - factory_.Register<DiceMessage>("Dice"); |
27 | | - factory_.Register<ForwardMessage>("Forward"); |
28 | | - factory_.Register<MusicShare>("MusicShare"); |
| 13 | + reflection.Register<PlainMessage>("Plain"); |
| 14 | + reflection.Register<ImageMessage>("Image"); |
| 15 | + reflection.Register<FlashImageMessage>("FlashImage"); |
| 16 | + reflection.Register<AtMessage>("At"); |
| 17 | + reflection.Register<AtAllMessage>("AtAll"); |
| 18 | + reflection.Register<AppMessage>("App"); |
| 19 | + reflection.Register<JsonMessage>("Json"); |
| 20 | + reflection.Register<XmlMessage>("Xml"); |
| 21 | + reflection.Register<FaceMessage>("Face"); |
| 22 | + reflection.Register<PokeMessage>("Poke"); |
| 23 | + reflection.Register<QuoteMessage>("Quote"); |
| 24 | + reflection.Register<FileMessage>("File"); |
| 25 | + reflection.Register<DiceMessage>("Dice"); |
| 26 | + reflection.Register<ForwardMessage>("Forward"); |
| 27 | + reflection.Register<MusicShare>("MusicShare"); |
29 | 28 | } |
| 29 | + return reflection; |
| 30 | + } |
| 31 | + |
| 32 | + MessageChain::MessageChain() :messages_(), messageId_(0), timestamp_(0) |
| 33 | + { |
30 | 34 | } |
31 | 35 |
|
32 | 36 | MessageChain::MessageChain(const MessageChain& mc) |
@@ -157,7 +161,7 @@ namespace Cyan |
157 | 161 | // 因此从 0 开始,防止漏掉消息 |
158 | 162 | for (size_t i = 0; i < j.size(); i++) |
159 | 163 | { |
160 | | - auto msg_ptr = factory_.DynamicCreate(j[i]["type"]); |
| 164 | + auto msg_ptr = GetMessageReflection().DynamicCreate(j[i]["type"]); |
161 | 165 | if (msg_ptr) |
162 | 166 | { |
163 | 167 | msg_ptr->Set(j[i]); |
|
0 commit comments