public DatabaseManager() { Container = new PermGuideContainer(); mSets = new Dictionary <Type, object>(); // При добавлении класса следует обновить /*mSets = new Dictionary<Type, object> * { * { typeof(ArticleRecord), Container.ContentRecordSet }, // ArticleRecordSet }, * { typeof(ExcursionRecord), Container.ContentRecordSet }, // ExcursionRecordSet }, * { typeof(FileRecord), Container.FileRecordSet }, * { typeof(RegionRecord), Container.RegionRecordSet }, * { typeof(ReviewRecord), Container.ReviewRecordSet }, * { typeof(SightRecord), Container.ContentRecordSet }, // SightRecordSet }, * { typeof(TimetableRecord), Container.TimetableRecordSet }, * { typeof(UserRecord), Container.UserRecordSet }, * * { typeof(DbSet<ArticleRecord>), Container.ContentRecordSet }, // ArticleRecordSet }, * { typeof(DbSet<ExcursionRecord>), Container.ContentRecordSet }, // ExcursionRecordSet }, * { typeof(DbSet<FileRecord>), Container.FileRecordSet }, * { typeof(DbSet<RegionRecord>), Container.RegionRecordSet }, * { typeof(DbSet<ReviewRecord>), Container.ReviewRecordSet }, * { typeof(DbSet<SightRecord>), Container.ContentRecordSet }, // SightRecordSet }, * { typeof(DbSet<TimetableRecord>), Container.TimetableRecordSet }, * { typeof(DbSet<UserRecord>), Container.UserRecordSet }, * };*/ var thisAsm = Assembly.GetExecutingAssembly(); var contType = Container.GetType(); var keys = from v in thisAsm.DefinedTypes where v.Name != "Record" && v.Name.Contains("Record") select v; var values = from v in contType.GetProperties() where v.Name.Contains("RecordSet") select v; foreach (var k in keys) { foreach (var v in values) { var vType = v.PropertyType.GenericTypeArguments[0]; if (k.IsSubclassOf(vType) || k == vType) { mSets.Add(k, v.GetValue(Container)); } } } }
public DatabaseManager() { Container = new PermGuideContainer(); mSets = new Dictionary <Type, object>(); // При добавлении класса следует обновить /*mSets = new Dictionary<Type, object> * { * { typeof(Article), Container.ContentSet }, // ArticleSet }, * { typeof(Excursion), Container.ContentSet }, // ExcursionSet }, * { typeof(File), Container.FileSet }, * { typeof(Region), Container.RegionSet }, * { typeof(Review), Container.ReviewSet }, * { typeof(Sight), Container.ContentSet }, // SightSet }, * { typeof(Timetable), Container.TimetableSet }, * { typeof(User), Container.UserSet }, * * { typeof(DbSet<Article>), Container.ContentSet }, // ArticleSet }, * { typeof(DbSet<Excursion>), Container.ContentSet }, // ExcursionSet }, * { typeof(DbSet<File>), Container.FileSet }, * { typeof(DbSet<Region>), Container.RegionSet }, * { typeof(DbSet<Review>), Container.ReviewSet }, * { typeof(DbSet<Sight>), Container.ContentSet }, // SightSet }, * { typeof(DbSet<Timetable>), Container.TimetableSet }, * { typeof(DbSet<User>), Container.UserSet }, * };*/ /*var thisAsm = Assembly.GetExecutingAssembly(); * var contType = Container.GetType(); * * var keys = from v * in thisAsm.DefinedTypes * where v.Name != "" && v.Name.Contains("") * select v; * * var values = from v * in contType.GetProperties() * where v.Name.Contains("Set") * select v; * * foreach (var k in keys) * foreach (var v in values) * { * var vType = v.PropertyType.GenericTypeArguments[0]; * * if (k.IsSubclassOf(vType) || k == vType) * mSets.Add(k, v.GetValue(Container)); * }*/ /* var thisAsm = Assembly.GetExecutingAssembly(); * var contType = Container.GetType(); * * var values = from v * in contType.GetProperties() * where v.Name.Contains("Set") * select v.Name.Substring(0, v.Name.Length - 3); * * var set = new HashSet<string>(values); * * var keys = from v * in thisAsm.DefinedTypes * where set.Contains(v.Name) * select v; * * mDbTypes = new HashSet<Type>(keys); */ mDbTypes = new HashSet <Type> { typeof(Article), typeof(Content), typeof(Excursion), typeof(MediaFile), typeof(Review), typeof(Sight), // typeof(Timetable), typeof(User), }; }