mirror of
				https://github.com/esiur/esiur-dotnet.git
				synced 2025-10-29 23:21:36 +00:00 
			
		
		
		
	inheritance
This commit is contained in:
		| @@ -47,6 +47,7 @@ public static class EsiurExtensions | |||||||
|  |  | ||||||
|     //} |     //} | ||||||
|  |  | ||||||
|  |  | ||||||
|     public static T AddResource<T>(this DbSet<T> dbSet, T resource) where T : class, IResource |     public static T AddResource<T>(this DbSet<T> dbSet, T resource) where T : class, IResource | ||||||
|         => AddResourceAsync(dbSet, resource).Wait(); |         => AddResourceAsync(dbSet, resource).Wait(); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ | |||||||
|     <Copyright>Ahmed Kh. Zamil</Copyright> |     <Copyright>Ahmed Kh. Zamil</Copyright> | ||||||
|      <PackageProjectUrl>http://www.esiur.com</PackageProjectUrl> |      <PackageProjectUrl>http://www.esiur.com</PackageProjectUrl> | ||||||
|     <GeneratePackageOnBuild>true</GeneratePackageOnBuild> |     <GeneratePackageOnBuild>true</GeneratePackageOnBuild> | ||||||
|     <Version>2.2.4.4</Version> |     <Version>2.2.5</Version> | ||||||
|     <RepositoryUrl>https://github.com/esiur/esiur-dotnet</RepositoryUrl> |     <RepositoryUrl>https://github.com/esiur/esiur-dotnet</RepositoryUrl> | ||||||
|     <Authors>Ahmed Kh. Zamil</Authors> |     <Authors>Ahmed Kh. Zamil</Authors> | ||||||
|     <AssemblyVersion></AssemblyVersion> |     <AssemblyVersion></AssemblyVersion> | ||||||
|   | |||||||
| @@ -219,16 +219,6 @@ public class TypeTemplate | |||||||
|         // Add self |         // Add self | ||||||
|         list.Add(template); |         list.Add(template); | ||||||
|  |  | ||||||
|         // Add parents |  | ||||||
|         var parentType = template.ParentDefinedType; |  | ||||||
|  |  | ||||||
|         // Get parents |  | ||||||
|         while (parentType != null) |  | ||||||
|         { |  | ||||||
|             var parentTemplate = Warehouse.GetTemplateByType(parentType); |  | ||||||
|             list.Add(parentTemplate); |  | ||||||
|             parentType = parentTemplate.ParentDefinedType; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         Action<TypeTemplate, List<TypeTemplate>> getDependenciesFunc = null; |         Action<TypeTemplate, List<TypeTemplate>> getDependenciesFunc = null; | ||||||
|  |  | ||||||
| @@ -237,6 +227,20 @@ public class TypeTemplate | |||||||
|             if (template.DefinedType == null) |             if (template.DefinedType == null) | ||||||
|                 return; |                 return; | ||||||
|  |  | ||||||
|  |             // Add parents | ||||||
|  |             var parentType = tmp.ParentDefinedType; | ||||||
|  |  | ||||||
|  |             // Get parents | ||||||
|  |             while (parentType != null) | ||||||
|  |             { | ||||||
|  |                 var parentTemplate = Warehouse.GetTemplateByType(parentType); | ||||||
|  |                 if (parentTemplate != null) | ||||||
|  |                 { | ||||||
|  |                     list.Add(parentTemplate); | ||||||
|  |                     parentType = parentTemplate.ParentDefinedType; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|             // functions |             // functions | ||||||
|             foreach (var f in tmp.functions) |             foreach (var f in tmp.functions) | ||||||
|             { |             { | ||||||
| @@ -803,7 +807,7 @@ public class TypeTemplate | |||||||
|         if (hasParent) |         if (hasParent) | ||||||
|         { |         { | ||||||
|             // find the first parent type that implements IResource |             // find the first parent type that implements IResource | ||||||
|             var ParentDefinedType = ResourceProxy.GetBaseType(type.BaseType); |             ParentDefinedType = ResourceProxy.GetBaseType(type.BaseType); | ||||||
|             var parentId = GetTypeGuid(ParentDefinedType); |             var parentId = GetTypeGuid(ParentDefinedType); | ||||||
|             b.AddGuid(parentId); |             b.AddGuid(parentId); | ||||||
|         } |         } | ||||||
| @@ -838,7 +842,8 @@ public class TypeTemplate | |||||||
|         var parent = type.BaseType; |         var parent = type.BaseType; | ||||||
|  |  | ||||||
|         if (parent == typeof(Resource) |         if (parent == typeof(Resource) | ||||||
|             || parent == typeof(Record)) |             || parent == typeof(Record) | ||||||
|  |             || parent == typeof(EntryPoint)) | ||||||
|             return false; |             return false; | ||||||
|  |  | ||||||
|         while (parent != null) |         while (parent != null) | ||||||
|   | |||||||
| @@ -1,2 +1,4 @@ | |||||||
| 1- Change branch to main | 1- Change branch to main | ||||||
| 2- Generic Records/Resources | 2- Generic Records/Resources | ||||||
|  | 3- Static functions calls | ||||||
|  | 4- Scan assembly for child classes | ||||||
| @@ -55,14 +55,14 @@ namespace Test | |||||||
|         { |         { | ||||||
|  |  | ||||||
|             // Create stores to keep objects. |             // Create stores to keep objects. | ||||||
|             var system = await Warehouse.Put("mem", new MemoryStore()); |             var system = await Warehouse.Put("sys", new MemoryStore()); | ||||||
|             var server = await Warehouse.Put("mem/server", new DistributedServer()); |             var server = await Warehouse.Put("sys/server", new DistributedServer()); | ||||||
|             var web = await Warehouse.Put("mem/web", new HTTPServer() { Port = 8888}); |             var web = await Warehouse.Put("sys/web", new HTTPServer() { Port = 8888}); | ||||||
|  |  | ||||||
|             var service = await Warehouse.Put("mem/service", new MyService()); |             var service = await Warehouse.Put("sys/service", new MyService()); | ||||||
|             var res1 = await Warehouse.Put("mem/service/r1", new MyResource() { Description = "Testing 1", CategoryId = 10 }); |             var res1 = await Warehouse.Put("sys/service/r1", new MyResource() { Description = "Testing 1", CategoryId = 10 }); | ||||||
|             var res2 = await Warehouse.Put("mem/service/r2", new MyResource() { Description = "Testing 2", CategoryId = 11 }); |             var res2 = await Warehouse.Put("sys/service/r2", new MyResource() { Description = "Testing 2", CategoryId = 11 }); | ||||||
|             var res3 = await Warehouse.Put("mem/service/c1", new MyChildResource() { ChildName = "Child 1", Description = "Child Testing 3", CategoryId = 12 }); |             var res3 = await Warehouse.Put("sys/service/c1", new MyChildResource() { ChildName = "Child 1", Description = "Child Testing 3", CategoryId = 12 }); | ||||||
|  |  | ||||||
|  |  | ||||||
|             service.Resource = res1; |             service.Resource = res1; | ||||||
| @@ -92,7 +92,7 @@ namespace Test | |||||||
|   |   | ||||||
|         private static async void TestClient(IResource local) |         private static async void TestClient(IResource local) | ||||||
|         { |         { | ||||||
|             dynamic remote = await Warehouse.Get<IResource>("iip://localhost/mem/service"); |             dynamic remote = await Warehouse.Get<IResource>("iip://localhost/sys/service"); | ||||||
|  |  | ||||||
|             var con = remote.Connection as DistributedConnection; |             var con = remote.Connection as DistributedConnection; | ||||||
|             var template = await con.GetTemplateByClassName("Test.MyResource"); |             var template = await con.GetTemplateByClassName("Test.MyResource"); | ||||||
| @@ -134,7 +134,7 @@ namespace Test | |||||||
|             //var childTemplate = remote.Child.Instance.Template; |             //var childTemplate = remote.Child.Instance.Template; | ||||||
|  |  | ||||||
|  |  | ||||||
|             var path = TemplateGenerator.GetTemplate("iip://localhost/mem/service", "Generated"); |             var path = TemplateGenerator.GetTemplate("iip://localhost/sys/service", "Generated"); | ||||||
|  |  | ||||||
|             Console.WriteLine(path); |             Console.WriteLine(path); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user