这个问题是我提出的上一个问题的延伸(并得到了解答).我正在重构我的代码,并尝试使用各种重构的解决方案.
我提出的解决方案之一(但不满意......记住,我只是尝试一些个人编码风格)wsa以下代码: -
if (data is ITagElement) { if (((ITagElement) data).TagList.IsNullOrEmpty()) { ((ITagElement) data).TagList = new List(); } ((ITagElement) data).TagList.Add(new Tag { K = xmlReader.GetAttribute("k"), V = xmlReader.GetAttribute("v") }); }
请注意我是如何将父对象强制转换data
为多次触发的接口类型?代码有效,但我觉得这是代码味道 - >它不是很有效.我觉得这可以改进 - 来自任何一个大师的想法吗?
那怎么样,所以你只做了一次演员:
ITagElement someData = data as ITagElement if (someData != null) { if (someData.TagList.IsNullOrEmpty()) { someData.TagList = new List(); } someData.TagList.Add(new Tag { K = xmlReader.GetAttribute("k"), V = xmlReader.GetAttribute("v") }); }