행운을 빕니다, 당신은 몇 가지 핫픽스 또는 새로운 .NET 버전을 적용 할 때 큰 힙 떨어지면 저를 비난하지 않는다 ..., 것입니다 포함 된 XmlAttributes를보다 잘 제어 할 수 있습니다. 이렇게하면 XmlAttributeOverridesBuilder
인스턴스에서 작업하고 필요한 경우 결합하여 XmlAttributeOverrides
인스턴스가 필요할 때 GetOverrides
메서드를 호출 할 수 있습니다.
public class XmlAttributeOverridesBuilder
{
private Dictionary<Type, Dictionary<string, XmlAttributes>> _entries;
public XmlAttributeOverridesBuilder()
{
_entries = new Dictionary<Type, Dictionary<string, XmlAttributes>>();
}
public void Add(Type type, XmlAttributes attributes)
{
Add(type, String.Empty, attributes);
}
public void Add(Type type, string member, XmlAttributes attributes)
{
Dictionary<string, XmlAttributes> typeEntries;
if (!_entries.TryGetValue(type, out typeEntries))
{
typeEntries = new Dictionary<string, XmlAttributes>();
_entries[type] = typeEntries;
}
typeEntries[member] = attributes;
}
public XmlAttributeOverrides GetOverrides()
{
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
foreach(var kvpType in _entries)
{
foreach(var kvpMember in kvpType.Value)
{
overrides.Add(kvpType.Key, kvpMember.Key, kvpMember.Value);
}
}
return overrides;
}
public XmlAttributeOverridesBuilder Combine(XmlAttributeOverridesBuilder other)
{
// combine logic to build a new XmlAttributeOverridesBuilder
// ...
}
}