mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2025-05-06 11:32:59 +00:00
inheritance
This commit is contained in:
parent
26709a959c
commit
0dc457bf7e
@ -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);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user