private IReadOnlyList <MethodSignature> GetMethodSignatures(IComponentProvider provider) { var boolSymbol = _symbols.GetSymbol <bool>(); var intSymbol = _symbols.GetSymbol <int>(); var memberType = _member.ReturnType !.Symbol; // Incoming Data type var discovery = new MethodArg(RefKind.In, provider.DiscoveryType, "parent"); var sourceType = new MethodArg(RefKind.In, _member.ContainingFullType.Symbol, "source"); // Buffers var readOnlySpan = new MethodArg(_symbols.GetSymbol(typeof(ReadOnlySpan <byte>)), "readOnlySpan"); var span = new MethodArg(_symbols.GetSymbol(typeof(Span <byte>)), "span"); var cursor = new MethodArg(RefKind.Ref, _symbols.GetSymbol(typeof(SequenceCursor <byte>)), "cursor"); // Return Data var readBytes = new MethodArg(RefKind.Out, intSymbol, "readBytes"); var writtenBytes = new MethodArg(RefKind.Out, intSymbol, "writtenBytes"); var result = new MethodArg(RefKind.Out, memberType, "result"); return(new MethodSignature[] { MethodSignatureBuilder.CreateConstructor(_typeName, (provider.DiscoveryType, "parser")), MethodSignatureBuilder.CreateConstructor(_typeName, (provider.DiscoveryType, "parser"), (RefKind.Out, boolSymbol, "isSuccess")), MethodSignatureBuilder.CreateMethod(_typeName, MemberMethod.TryDeserializeState(0)) .AddArgument(discovery, readOnlySpan, readBytes, result) .WithReturn <bool>(), MethodSignatureBuilder.CreateMethod(_typeName, MemberMethod.TryDeserializeState(0)) .AddArgument(discovery, cursor, result) .WithReturn <bool>(), MethodSignatureBuilder.CreateMethod(_typeName, MemberMethod.DeserializeState(0)) .AddArgument(discovery, readOnlySpan, result) .WithReturn(memberType), MethodSignatureBuilder.CreateMethod(_typeName, MemberMethod.DeserializeState(0)) .AddArgument(discovery, cursor) .WithReturn(memberType), MethodSignatureBuilder.CreateMethod(_typeName, MemberMethod.TrySerializeState(0)) .AddArgument(discovery, sourceType, span, writtenBytes) .WithReturn(boolSymbol), MethodSignatureBuilder.CreateMethod(_typeName, MemberMethod.SerializeState(0)) .AddArgument(discovery, sourceType, span) .WithReturn(intSymbol), MethodSignatureBuilder.CreateMethod(_typeName, MemberMethod.GetLengthState(0)) .AddArgument(discovery, sourceType) .WithReturn(intSymbol) });
public IGenerateAction InitalizeSelection(CodeGenerationOptions options, Gtk.TreeView treeView) { CreateConstructor createConstructor = new CreateConstructor(options); createConstructor.Initialize(treeView); return(createConstructor); }
protected virtual void CreateRouteDefinition() { routeDefinition = sourceGenerator.GenerateTypeDeclaration(@namespace, node.Name + "Route", routeDefinitions.Name); AddRouteDefinitionBaseType(); routeDefinition.Members.Add( CreateConstructor.WithParameters() .WithAttributes(MemberAttributes.Public) .WithBaseConstructorArgs(GetRouteDefinitionBaseConstructorArgs()) .Constructor); }
private static void CreateRoutesTypeConstructor(CodeTypeDeclaration type) { CodeMemberField engineContext = CreateMemberField.WithNameAndType <IEngineContext>(engineContextFieldName).WithAttributes(MemberAttributes.Family).Field; type.Members.Add(engineContext); CodeConstructor constructor = CreateConstructor .WithParameters(new CodeParameterDeclarationExpression(typeof(IEngineContext), engineContext.Name)) .WithAttributes(MemberAttributes.Public) .WithBody(CreateAssignStatement.This(engineContext.Name).EqualsArgument(engineContext.Name).Statement) .Constructor; type.Members.Add(constructor); }
public bool IsValid(CodeGenerationOptions options) { CreateConstructor createConstructor = new CreateConstructor(options); return(createConstructor.IsValid()); }
public IGenerateAction InitalizeSelection (CodeGenerationOptions options, Gtk.TreeView treeView) { CreateConstructor createConstructor = new CreateConstructor (options); createConstructor.Initialize (treeView); return createConstructor; }
public bool IsValid (CodeGenerationOptions options) { CreateConstructor createConstructor = new CreateConstructor (options); return createConstructor.IsValid (); }
/// <summary> /// 创建指定类型的对象实例。 /// </summary> /// <param name="type">要创建实例的类型。</param> /// <param name="args">调用构造函数需要传递的参数。</param> /// <returns></returns> public static object Create(Type type, params object[] args) { return(args == null || args.Length == 0 ? CreateDefaultConstructor(type)() : CreateConstructor(FindConstructor(type, args))(args)); }
public static object Createinstance(Type type, object[] args) { return(CreateConstructor(type, args)(args)); }