private void WriteEnumerable(IEnumerable array) { var childObjectWalker = new ObjectWalker( this.Indent, this.Level + 2, this.Builder); this.WriteTypeName(array.GetType()); var coll = array as ICollection; if (coll != null && coll.Count == 0) { this.Builder.Append(" []"); return; } this.WriteIndent(); this.Builder.Append("["); this.WriteIndent(); foreach (var o in array) { this.Builder.Append(' '.Repeat(this.Indent)); childObjectWalker.Walk(o); this.Builder.Append(","); this.WriteIndent(); } this.Builder.Append("]"); }
public string Build() { var builder = new StringBuilder(); var walker = new ObjectWalker(this.indent, 0, builder); walker.Walk(this.obj); return(builder.ToString()); }
/// <summary> /// Get a list of properties and fields from a data contract that satisfy the predicate. /// </summary> protected static IEnumerable <IObjectMemberContext> GetDataMemberFields(object dataObject, Predicate <MemberInfo> memberTest) { var walker = new ObjectWalker(memberTest) { IncludeNonPublicFields = true, IncludeNonPublicProperties = true }; return(walker.Walk(dataObject)); }
public void TestWalkAllMembersWithFilter() { // exclude members starting with an underscore ObjectWalker walker = new ObjectWalker(delegate(MemberInfo member) { return(!member.Name.StartsWith("_")); }); // all members walker.IncludeNonPublicFields = true; walker.IncludeNonPublicProperties = true; walker.IncludePublicFields = true; walker.IncludePublicProperties = true; List <IObjectMemberContext> members = new List <IObjectMemberContext>(walker.Walk(new Foo())); Assert.AreEqual(4, members.Count); }
public void TestWalkAllMembers() { ObjectWalker walker = new ObjectWalker(); // all members walker.IncludeNonPublicFields = true; walker.IncludeNonPublicProperties = true; walker.IncludePublicFields = true; walker.IncludePublicProperties = true; List <IObjectMemberContext> members = new List <IObjectMemberContext>(walker.Walk(new Foo())); // there will be 6 members, becausing of the backing fields for the properties Assert.AreEqual(6, members.Count); }
public void TestWalkPublicProperties() { ObjectWalker walker = new ObjectWalker(); // public properties walker.IncludeNonPublicFields = false; walker.IncludeNonPublicProperties = false; walker.IncludePublicFields = false; walker.IncludePublicProperties = true; List<IObjectMemberContext> members = new List<IObjectMemberContext>(walker.Walk(new Foo())); Assert.AreEqual(1, members.Count); Assert.AreEqual("PublicProperty", members[0].Member.Name); Assert.AreEqual(Foo.SomeObject, members[0].MemberValue); }
protected void WriteObjectProperties(object obj, XmlWriter writer) { ObjectWalker walker = new ObjectWalker( delegate(IObjectMemberContext ctx) { WriteProperty(ctx.Object, (PropertyInfo)ctx.Member, ctx.MemberValue, writer); }, delegate(MemberInfo member) { return(AttributeUtils.HasAttribute <PersistentPropertyAttribute>(member)); }); walker.IncludePublicFields = false; walker.Walk(obj); }
public void TestWalkPublicFields() { ObjectWalker walker = new ObjectWalker(); // public fields walker.IncludeNonPublicFields = false; walker.IncludeNonPublicProperties = false; walker.IncludePublicFields = true; walker.IncludePublicProperties = false; List <IObjectMemberContext> members = new List <IObjectMemberContext>(walker.Walk(new Foo())); Assert.AreEqual(1, members.Count); Assert.AreEqual("PublicField", members[0].Member.Name); Assert.AreEqual("hello", members[0].MemberValue); }
public void TestWalkType() { // exclude members starting with an underscore ObjectWalker walker = new ObjectWalker(); // all members walker.IncludeNonPublicFields = true; walker.IncludeNonPublicProperties = true; walker.IncludePublicFields = true; walker.IncludePublicProperties = true; // in this case we walk typeof(Foo) rather than an instance of Foo List <IObjectMemberContext> members = new List <IObjectMemberContext>(walker.Walk(typeof(Foo))); // there will be 6 members, becausing of the backing fields for the properties Assert.AreEqual(6, members.Count); }
protected static Dictionary <string, string> GetColumnMap(Type entityType) { ObjectWalker walker = new ObjectWalker(); Dictionary <string, string> propMap = new Dictionary <string, string>(); foreach (IObjectMemberContext member in walker.Walk(entityType)) { EntityFieldDatabaseMappingAttribute map = AttributeUtils.GetAttribute <EntityFieldDatabaseMappingAttribute>(member.Member); if (map != null) { propMap.Add(member.Member.Name, map.ColumnName); } } return(propMap); }
private static Dictionary <string, PropertyInfo> LoadMap(Type entityType) { ObjectWalker walker = new ObjectWalker(); Dictionary <string, PropertyInfo> propMap = new Dictionary <string, PropertyInfo>(); foreach (IObjectMemberContext member in walker.Walk(entityType)) { EntityFieldDatabaseMappingAttribute map = AttributeUtils.GetAttribute <EntityFieldDatabaseMappingAttribute>(member.Member); if (map != null) { propMap.Add(map.ColumnName, member.Member as PropertyInfo); } } return(propMap); }
public void TestWalkPrivateFields() { ObjectWalker walker = new ObjectWalker(); // private field walker.IncludeNonPublicFields = true; walker.IncludeNonPublicProperties = false; walker.IncludePublicFields = false; walker.IncludePublicProperties = false; List <IObjectMemberContext> members = new List <IObjectMemberContext>(walker.Walk(new Foo())); // there will be 3 private fields, becausing of the backing fields for the properties Assert.AreEqual(3, members.Count); foreach (IObjectMemberContext member in members) { if (member.Member.Name == "PrivateField") { Assert.AreEqual(true, member.MemberValue); } } }
public void TestMutation() { // exclude members starting with an underscore ObjectWalker walker = new ObjectWalker(delegate(MemberInfo member) { return(!member.Name.StartsWith("_")); }); // all members walker.IncludeNonPublicFields = true; walker.IncludeNonPublicProperties = true; walker.IncludePublicFields = true; walker.IncludePublicProperties = true; Foo foo = new Foo(); Foo foo2 = new Foo(); // in this test we change all the values of foo via the IObjectMemberContext foreach (IObjectMemberContext context in walker.Walk(foo)) { if (context.MemberType == typeof(bool)) { context.MemberValue = false; } if (context.MemberType == typeof(string)) { context.MemberValue = "goodbye"; } if (context.MemberType == typeof(int)) { context.MemberValue = 1; } if (context.MemberType == typeof(object)) { context.MemberValue = foo2; } } Assert.AreEqual(true, foo.CheckConsistency(false, "goodbye", 1, foo2)); }
public void TestMutation() { // exclude members starting with an underscore ObjectWalker walker = new ObjectWalker(delegate(MemberInfo member) { return !member.Name.StartsWith("_"); }); // all members walker.IncludeNonPublicFields = true; walker.IncludeNonPublicProperties = true; walker.IncludePublicFields = true; walker.IncludePublicProperties = true; Foo foo = new Foo(); Foo foo2 = new Foo(); // in this test we change all the values of foo via the IObjectMemberContext foreach (IObjectMemberContext context in walker.Walk(foo)) { if (context.MemberType == typeof(bool)) context.MemberValue = false; if (context.MemberType == typeof(string)) context.MemberValue = "goodbye"; if (context.MemberType == typeof(int)) context.MemberValue = 1; if (context.MemberType == typeof(object)) context.MemberValue = foo2; } Assert.AreEqual(true, foo.CheckConsistency(false, "goodbye", 1, foo2)); }
public void TestWalkType() { // exclude members starting with an underscore ObjectWalker walker = new ObjectWalker(); // all members walker.IncludeNonPublicFields = true; walker.IncludeNonPublicProperties = true; walker.IncludePublicFields = true; walker.IncludePublicProperties = true; // in this case we walk typeof(Foo) rather than an instance of Foo List<IObjectMemberContext> members = new List<IObjectMemberContext>(walker.Walk(typeof(Foo))); // there will be 6 members, becausing of the backing fields for the properties Assert.AreEqual(6, members.Count); }
public void TestWalkAllMembersWithFilter() { // exclude members starting with an underscore ObjectWalker walker = new ObjectWalker(delegate(MemberInfo member) { return !member.Name.StartsWith("_"); }); // all members walker.IncludeNonPublicFields = true; walker.IncludeNonPublicProperties = true; walker.IncludePublicFields = true; walker.IncludePublicProperties = true; List<IObjectMemberContext> members = new List<IObjectMemberContext>(walker.Walk(new Foo())); Assert.AreEqual(4, members.Count); }
public void TestWalkAllMembers() { ObjectWalker walker = new ObjectWalker(); // all members walker.IncludeNonPublicFields = true; walker.IncludeNonPublicProperties = true; walker.IncludePublicFields = true; walker.IncludePublicProperties = true; List<IObjectMemberContext> members = new List<IObjectMemberContext>(walker.Walk(new Foo())); // there will be 6 members, becausing of the backing fields for the properties Assert.AreEqual(6, members.Count); }
public void TestWalkPrivateFields() { ObjectWalker walker = new ObjectWalker(); // private field walker.IncludeNonPublicFields = true; walker.IncludeNonPublicProperties = false; walker.IncludePublicFields = false; walker.IncludePublicProperties = false; List<IObjectMemberContext> members = new List<IObjectMemberContext>(walker.Walk(new Foo())); // there will be 3 private fields, becausing of the backing fields for the properties Assert.AreEqual(3, members.Count); foreach (IObjectMemberContext member in members) { if(member.Member.Name == "PrivateField") Assert.AreEqual(true, member.MemberValue); } }