рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдореИрдВрдиреЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рдХреБрдЫ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ xml рдмрдирд╛рддрд╛ рд╣реИред
рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╕рдордп, рдПрдХ рдЖрд▓рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдКрд░реНрдЬрд╛ рдХреИрд╕реЗ рдмрдЪрд╛рдПрдВ, рдФрд░ рдЬреЛ рддрдВрддреНрд░рд┐рдХрд╛рдУрдВ рдХреЛ рдкрдврд╝реЗрдВ рдФрд░ рдЬрд▓реНрджреА рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ?
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдпрд╛:
рдЙрджрд╛рд╣рд░рдг
dynamic rootTag = new XmlBuilder("Root", _nmsps); dynamic modelTag = new XmlBuilder("Model", _nmsps); dynamic elementTag = new XmlBuilder("ElementRef", _nmsps); dynamic attrTag = new XmlBuilder("ElementAttribute", _nmsps); XDocument doc = rootTag(id: Guid.Empty, model: modelTag(id: model.ObjectId, name: model.Name, e1: elementTag(id: er.ObjectId, name: elem1.Name, ea1: attrTag(id: attr1.ObjectId, name: attr1.Name), ea2: attrTag(id: attr2.ObjectId, name: attr2.Name)), e2: elementTag(id: er2.ObjectId, name: elem2.Name)));
XmlBuilder рдПрдХ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдбрд╛рдпрдиреЗрдорд┐рдХрдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЛ рдпрд╛ рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрджрд┐ рдпрд╣ XmlBuilder рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рддрд░реНрдХ рд╣реИ - рдпрд╛ рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдореЗрдВ (рдпрд╣рд╛рдБ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ) - рдпрджрд┐ рдпрд╣ XmlBuilder рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ XmlBuilder рдкрд░рд┐рдгрд╛рдореА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдПрдХ рдЯреИрдЧ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рд╣рдо рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рддреБрд▓рдирд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
// //... // , dynamic rootTag = new XmlBuilder("Root", _nmsps); dynamic modelTag = new XmlBuilder("Model", _nmsps); dynamic elementTag = new XmlBuilder("ElementRef", _nmsps); dynamic attrTag = new XmlBuilder("ElementAttribute", _nmsps); XDocument targetDocument = rootTag(id: Guid.Empty, model: modelTag(id: model.ObjectId, name: model.Name, e1: elementTag(id: er.ObjectId, name: elem1.Name, ea1: attrTag(id: attr1.ObjectId, name: attr1.Name), ea2: attrTag(id: attr2.ObjectId, name: attr2.Name)), e2: elementTag(id: er2.ObjectId, name: elem2.Name))); // var resultDocument = TestableMethod(); // var _comparer = new XDocComparer(); Assert.IsTrue(_comparer.Equals(targetDocument, resultDocument));
рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдЦреИрд░, рддреБрд▓рдирд┐рддреНрд░, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ IEqualityComparer рд╣реИ, рдпрд╣ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рд╣реИред
рдлрд┐рд░ рднреА, XmlBuilder рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдпрд╣рд╛рдВ рд╣реИ , рдФрд░ XDocComparer рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдпрд╣рд╛рдВ рд╣реИ , рдореИрдВ рдЖрдкрд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ рдпрджрд┐ рдХреЛрдИ рдХрд╛рдо рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИред