WildcardAlias

WilldcardAlias allows creating aliases for packages, namespaces or multiple similar classes. WilcardAlias constructor accepts 2 parameters:

* symbol is used to specify the place where multiple matches are allowed (you can use only one * per pattern).

Let's look how to alias all classes within one package/namespace.

AliasExample.cs: SavePilots
01public static void SavePilots() 02 { 03 File.Delete(YapFileName); 04 IObjectContainer db = Db4oFactory.OpenFile(YapFileName); 05 try 06 { 07 Pilot pilot = new Pilot("David Barrichello", 99); 08 db.Set(pilot); 09 pilot = new Pilot("Kimi Raikkonen", 100); 10 db.Set(pilot); 11 } 12 finally 13 { 14 db.Close(); 15 } 16 }
AliasExample.cs: ConfigureAlias
1public static void ConfigureAlias() 2 { 3 // Db4objects.Db4odoc.Aliases.* - namespace for the classes saved in the database 4 // Db4objects.Db4odoc.Aliases.NewAlias.* - runtime namespace 5 WildcardAlias wAlias = new WildcardAlias("Db4objects.Db4odoc.Aliases.*", "Db4objects.Db4odoc.Aliases.NewAlias.*"); 6 Db4oFactory.Configure().AddAlias(wAlias); 7 Console.WriteLine("Stored name for Db4objects.Db4odoc.Aliases.NewAlias.Pilot: " + wAlias.ResolveRuntimeName("Db4objects.Db4odoc.Aliases.NewAlias.Pilot")); 8 Console.WriteLine("Runtime name for Db4objects.Db4odoc.Aliases.Pilot: " + wAlias.ResolveStoredName("Db4objects.Db4odoc.Aliases.Pilot")); 9 }

AliasExample.vb: SavePilots
01Public Shared Sub SavePilots() 02 File.Delete(YapFileName) 03 Dim db As IObjectContainer = Db4oFactory.OpenFile(YapFileName) 04 Try 05 Dim pilot As Pilot = New Pilot("David Barrichello", 99) 06 db.Set(pilot) 07 pilot = New Pilot("Kimi Raikkonen", 100) 08 db.Set(pilot) 09 Finally 10 db.Close() 11 End Try 12 End Sub
AliasExample.vb: ConfigureAlias
1Public Shared Sub ConfigureAlias() 2 Dim wAlias As WildcardAlias = New WildcardAlias("Db4objects.Db4odoc.Aliases.*", "Db4objects.Db4odoc.Aliases.NewAlias.*") 3 Db4oFactory.Configure.AddAlias(wAlias) 4 Console.WriteLine("Stored name for Db4objects.Db4odoc.Aliases.NewAlias.Pilot: " + wAlias.ResolveRuntimeName("Db4objects.Db4odoc.Aliases.NewAlias.Pilot")) 5 Console.WriteLine("Runtime name for Db4objects.Db4odoc.Aliases.Pilot: " + wAlias.ResolveStoredName("Db4objects.Db4odoc.Aliases.Pilot")) 6 End Sub

You can check the matches for the concrete classes using resolveRuntimeName and resolveStoredName.

In order to add your own aliasing logic implement Alias interface (for example you may want to use more sophisticated pattern logic). You own resolving logic implementation should reside in resolveRuntimeName and resolveStoredName methods.