Заработала демка с новым бэком

This commit is contained in:
2025-03-08 22:31:40 +03:00
parent 4863010b47
commit 0e09b479af
5 changed files with 18 additions and 18 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ class Program
public static void Main(string[] args)
{
var builder = new FullMixBuilder();
// new RemoteTypeBinder();
new RemoteTypeBinder();
// builder.Modules.Add(new JsonSerializationToolkit());
builder.Modules.Add(new CborSerializationToolkit());
+14 -6
View File
@@ -29,8 +29,8 @@ namespace mROA.Codegen
// var reader = new StreamReader(test);
// var allText = reader.ReadToEnd();
var frontendContextRepo = new List<string>();
List<IMethodSymbol> totalMethods = new List<IMethodSymbol>();
List<IMethodSymbol> innerMethods = new List<IMethodSymbol>();
List<string> invokers = new List<string>();
var declarations = classes.ToList().OrderBy(i => i.Identifier.Text).ToList();
foreach (var classDeclarationSyntax in declarations)
@@ -39,10 +39,11 @@ namespace mROA.Codegen
if (semanticModel.GetDeclaredSymbol(classDeclarationSyntax) is not INamedTypeSymbol classSymbol)
continue;
List<IMethodSymbol> innerMethods = new List<IMethodSymbol>();
var namespaceName = classSymbol.ContainingNamespace.ToDisplayString();
var className = classDeclarationSyntax.Identifier.Text;
innerMethods.AddRange(CollectMembers(classSymbol));
innerMethods = CollectMembers(classSymbol);
var associated = innerMethods.Select(i => i.AssociatedSymbol).Where(i => i != null)
.Distinct(SymbolEqualityComparer.Default).Cast<ISymbol>().ToList();
@@ -50,6 +51,8 @@ namespace mROA.Codegen
i.MethodKind != MethodKind.EventAdd && i.MethodKind != MethodKind.EventRemove)
.ToList();
totalMethods.AddRange(innerMethods);
var originalName = className;
className = className.TrimStart('I') + "RemoteEndpoint";
@@ -63,10 +66,10 @@ namespace mROA.Codegen
switch (method.MethodKind)
{
case MethodKind.PropertyGet or MethodKind.PropertySet:
GeneratePropertyMethod(method, innerMethods, propertiesAccessMethods, invokers);
GeneratePropertyMethod(method, totalMethods, propertiesAccessMethods, invokers);
continue;
default:
GenerateDeclaredMethod(method, declaredMethods, innerMethods, invokers);
GenerateDeclaredMethod(method, declaredMethods, totalMethods, invokers);
break;
}
}
@@ -132,11 +135,10 @@ namespace {namespaceName}
$"{{ typeof({classSymbol.ToDisplayString()}), typeof({namespaceName}.{className}) }}");
}
if (innerMethods.Count != 0)
if (totalMethods.Count != 0)
{
var methodsStringed = invokers;
var coCodegenRepoCode = @$"// <auto-generated/>
using System.Collections.Generic;
using System.Reflection;
@@ -325,6 +327,7 @@ namespace mROA.Codegen
{level} IsVoid = {isVoid.ToString().ToLower()},
{(isVoid ? String.Empty : (level + "\t" + "ReturnType = typeof(" + ExtractTaskType(method.ReturnType)) + "),")}
{level} ParameterTypes = new Type[] {{ {parameterTypes} }},
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
{level} Invoking = (i, parameters, special, post) => {funcInvoking},
{level}}}";
else
@@ -333,6 +336,7 @@ namespace mROA.Codegen
{level} IsVoid = {isVoid.ToString().ToLower()},
{level} ReturnType = typeof({method.ReturnType.ToDisplayString()}),
{level} ParameterTypes = new Type[] {{ {parameterTypes} }},
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
{level} Invoking = (i, parameters, special) => {funcInvoking}
{level}}}";
@@ -373,6 +377,7 @@ namespace mROA.Codegen
{level} IsVoid = false,
{level} ReturnType = typeof({method.ReturnType.ToDisplayString()}),
{level} ParameterTypes = new Type[] {{ {parameterTypes} }},
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
{level} Invoking = (i, parameters, _) => (i as {method.ContainingType.ToDisplayString()})[{parameterInserts}],
{level}}}";
}
@@ -382,6 +387,7 @@ namespace mROA.Codegen
{level}{{
{level} IsVoid = false,
{level} ReturnType = typeof({method.ReturnType.ToDisplayString()}),
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
{level} Invoking = (i, _, _) => (i as {method.ContainingType.ToDisplayString()}).{(method.AssociatedSymbol as IPropertySymbol)!.Name},
{level}}}";
}
@@ -420,6 +426,7 @@ namespace mROA.Codegen
{level} IsVoid = false,
{level} ReturnType = typeof({method.ReturnType.ToDisplayString()}),
{level} ParameterTypes = new Type[] {{ {parameterTypes} }},
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
{level} Invoking = (i, parameters, _) => (i as {method.ContainingType.ToDisplayString()})[{parameterInserts}] = {valueInsert},
{level}}}";
}
@@ -429,6 +436,7 @@ namespace mROA.Codegen
{level}{{
{level} IsVoid = false,
{level} ReturnType = typeof({method.ReturnType.ToDisplayString()}),
{level} SuitableType = typeof({method.ContainingType.ToDisplayString()}),
{level} Invoking = (i, parameters, _) => (i as {method.ContainingType.ToDisplayString()}).{(method.AssociatedSymbol as IPropertySymbol)!.Name} = {Caster((method.AssociatedSymbol as IPropertySymbol)!.Type, "parameters[0]")},
{level}}}";
}
@@ -79,7 +79,7 @@ namespace mROA.Implementation.Backend
object?[]? castedParams = null;
if (invoker.ParameterTypes != Type.EmptyTypes)
if (invoker.ParameterTypes.Length != 0)
{
castedParams = new object[invoker.ParameterTypes.Length];
for (int i = 0; i < castedParams.Length; i++)
-1
View File
@@ -20,7 +20,6 @@ namespace mROA.Implementation
public static readonly IMethodInvoker Dispose = new MethodInvoker
{
IsVoid = true,
ReturnType = null,
Invoking = (instance, _, _) =>
{
(instance as IDisposable)?.Dispose();
@@ -6,13 +6,6 @@ namespace mROA.Implementation
#pragma warning disable CS8618, CS9264
public struct UniversalObjectIdentifier : IEquatable<UniversalObjectIdentifier>
{
private static IMethodInvoker x = new MethodInvoker
{
IsVoid = false,
ReturnType = typeof(void),
ParameterTypes = Type.EmptyTypes
};
public int ContextId;
public int OwnerId;