public override void ConstructWordEffect <T>(T effectData) { TypeWriterEffectData data = effectData as TypeWriterEffectData; if (data == null) { throw new Exception(string.Format("try to create word effect with wrong data")); } }
static List <WordEffect> CreateWordEffects(string line, Word ownerWord) { List <WordEffect> createdWordEffect = new List <WordEffect>(); //用|来分割关键字段 List <string> phrases = new List <string>(line.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries)); foreach (string phrase in phrases) { if (phrase.Contains("<")) { char[] phraseCharArr = phrase.ToCharArray(); for (int i = 0; i < phraseCharArr.Length; ++i) { char ch = phraseCharArr[i]; if (i == 0 && ch != '<') { throw new Exception(string.Format("Wrong line {0}", phrase)); } if (i == 1) { switch (ch) { case 'T': TypeWriterEffectData data = new TypeWriterEffectData(phrase); TypeWriterEffect typeWriterEffect = CreateWordEffect <TypeWriterEffect, TypeWriterEffectData>(data); createdWordEffect.Add(typeWriterEffect); break; } } } foreach (char ch in phraseCharArr) { } if (phraseCharArr[0] != '<') { } char typeC = phraseCharArr[1]; } else { //default we use TypeWriterEffect TypeWriterEffectData data = new TypeWriterEffectData(phrase); TypeWriterEffect typeWriterEffect = CreateWordEffect <TypeWriterEffect, TypeWriterEffectData>(data); createdWordEffect.Add(typeWriterEffect); } } return(createdWordEffect); }