Type filtering

 

The DB class has a new property TypeRules with a method

public TypeDefinitions IgnoreType(Type type)

which performs so called type filtering.

 

The type filtering feature allows ignoring some specific types (and their descendants) from being added into the database. All objects or fields or properties of ignored types will not appear in the database.

 

Fields and properties of ignored types will have their default values (usually null) when returned by a query.

 

The following types are automatically added into the ignored types list:

 

·         System.Runtime.ConstrainedExecution.CriticalFinalizerObject

·         System.Type

·         System.Reflection.Assembly

·         System.AppDomain

·         System.ActivationContext

·         System.Exception

·         System.AppDomainManager

·         System.IAppDomainSetup

·         System.ApplicationId

·         System.ApplicationIdentity

·         System.Attribute

·         System.Threading.WaitHandle

·         System.Runtime.InteropServices._AssemblyName

·         System.Reflection.Binder

·         System.IntPtr

·         System.Signature

·         System.WeakReference

·         System.Threading.Timer

·         System.Threading.TimerBase

·         System.Threading.SynchronizationContext

·         System.Threading.Overlapped

·         System.IntPtr

·         System.Windows.Threading.Dispatcher

·         System.Windows.DependencyProperty

·         System.Threading.CompressedStack

·         System.Threading.Monitor

·         System.IO.Stream

·         System.Runtime.Serialization.SerializationInfo

·         MS.Utility.FrugalListBase<>

·         MS.Utility.FrugalObjectList<>

·         System.Windows.Media.UniqueEventHelper<>

·         System.Windows.Media.UniqueEventHelper

·         System.Windows.Media.ColorContext

 

Usage example:

 

DB db = new DB(connectionString);

 

db.CreateDatabase("Sample");

db.OpenDatabase("Sample");

 

db.RegisterType(typeof(Book));

db.TypeRules.IgnoreType(typeof(DebugBook)); // This type will be ignored. Use this line only in database creation scripts.

 

db.Close();