private static Класс[] НайтиКлассы(string очищенныйИсходник) { string шаблон = @"class\s+URHO3D_API\s+[^{};]+" + @"{" + @"(?:" + @"[^{}]" + @"|(?'BRACKET'{)" + @"|(?'-BRACKET'})" + @")+" + @"(?(BRACKET)(?!))" + @"};"; MatchCollection соответствия = Regex.Matches(очищенныйИсходник, шаблон, RegexOptions.Singleline); Класс[] результат = new Класс[соответствия.Count]; for (int i = 0; i < результат.Length; i++) { результат[i] = new Класс(соответствия[i].Value); } return(результат); }
public void InheritanceTest() { var masterRoot = new MasterRoot { MasterAttr = 234 }; var master = new MasterClass { MasterAttr2 = true, MasterAttr1 = DateTime.Now, MasterRoot = masterRoot }; var clazz = new MyClass { MasterClass = master, Attr1 = "abc", Attr2 = 1 }; var derived = new Класс { MasterClass = master, Attr1 = "123", Attr2 = 55, Атрибут3 = true }; var detail1 = new DetailClass { MyClass = clazz, DetailAttr = "def1" }; var detail2 = new DetailClass { MyClass = clazz, DetailAttr = "def2" }; var detailChild = new DetailClass2 { DetailClass = detail2, DetailAttr2 = "cbd" }; var objsToUpdate = new DataObject[] { master, clazz, detail1, detail2, derived, masterRoot, detailChild }; DataService.UpdateObjects(ref objsToUpdate, new DataObjectCache(), true); try { DataService.LoadObject(new MasterRoot { __PrimaryKey = masterRoot.__PrimaryKey }); } catch (CantFindDataObjectException) { Assert.True(false, "Object not saved."); } try { DataService.LoadObject(new MasterClass { __PrimaryKey = master.__PrimaryKey }); } catch (CantFindDataObjectException) { Assert.True(false, "Object not saved."); } try { DataService.LoadObject(new MyClass { __PrimaryKey = clazz.__PrimaryKey }); } catch (CantFindDataObjectException) { Assert.True(false, "Object not saved."); } try { DataService.LoadObject(new Класс { __PrimaryKey = derived.__PrimaryKey }); } catch (CantFindDataObjectException) { Assert.True(false, "Object not saved."); } try { DataService.LoadObject(new DetailClass { __PrimaryKey = detail1.__PrimaryKey }); } catch (CantFindDataObjectException) { Assert.True(false, "Object not saved."); } try { DataService.LoadObject(new DetailClass { __PrimaryKey = detail2.__PrimaryKey }); } catch (CantFindDataObjectException) { Assert.True(false, "Object not saved."); } try { DataService.LoadObject(new DetailClass2 { __PrimaryKey = detailChild.__PrimaryKey }); } catch (CantFindDataObjectException) { Assert.True(false, "Object not saved."); } }