private static void LoadInheritedClassdefStructure(out IClassDef parentClassDef, out IClassDef childClassDef, out IClassDef grandchildClassDef, ORMapping orMappingType) { string inheritanceType = orMappingType.ToString(); string discriminator = ""; if (orMappingType == ORMapping.SingleTableInheritance) { discriminator = @"discriminator=""blah"""; } XmlClassLoader loader = new XmlClassLoader(new DtdLoader(), new DefClassFactory()); parentClassDef = loader.LoadClass( @"<class name=""Parent"" assembly=""Habanero.Test""> <property name=""MyBoID"" type=""Guid"" /> <property name=""FakeUCProp"" type=""string"" /> <key name=""UC_Fake""> <prop name=""FakeUCProp"" /> </key> <primaryKey> <prop name=""MyBoID"" /> </primaryKey> </class> "); childClassDef = loader.LoadClass(String.Format( @"<class name=""Child"" assembly=""Habanero.Test""> <superClass class=""Parent"" assembly=""Habanero.Test"" orMapping=""{0}"" {1} /> <property name=""Prop1"" /> <property name=""FakeUCPropChild"" type=""string"" /> <key name=""UC_FakeChild""> <prop name=""FakeUCPropChild"" /> </key> </class> ", inheritanceType, discriminator)); grandchildClassDef = loader.LoadClass(String.Format( @"<class name=""Grandchild"" assembly=""Habanero.Test""> <superClass class=""Child"" assembly=""Habanero.Test"" orMapping=""{0}"" {1} /> <property name=""Prop2"" /> <property name=""FakeUCPropGrandchild"" type=""string"" /> <key name=""UC_FakeGrandchild""> <prop name=""FakeUCPropGrandchild"" /> </key> </class> ", inheritanceType, discriminator)); ClassDef.ClassDefs.Add(parentClassDef); ClassDef.ClassDefs.Add(childClassDef); ClassDef.ClassDefs.Add(grandchildClassDef); }