コード例 #1
0
 public Entry(ActionDefinitionAsset asset)
 {
     @delegate = asset.delegateType;
     variable  = asset.variableType;
     destroyEntitiesEntityCommandBufferSystem = asset.destroyEntitiesUsing;
     fieldOperations = asset.useFieldOperations;
     aggregator      = asset.aggregator;
 }
コード例 #2
0
ファイル: MapperXml.cs プロジェクト: AD-7/TPA_adkj
 private static MethodDTG MethodDtg(SerializableMethod methodModel)
 {
     return(new MethodDTG()
     {
         Name = methodModel.Name,
         MetadataName = methodModel.MetadataName,
         SerReturnType = LoadType(methodModel.SerReturnType),
         SerParameters = methodModel.SerParameters?.Select(ParameterDtg).ToList()
     });
 }
コード例 #3
0
        public void Analyze(AssemblyDefinition assemblyDefinition, ModuleDefinition moduleDefinition, TypeDefinition typeDefinition, MethodDefinition methodDefinition)
        {
            var method     = new SerializableMethod(methodDefinition.DeclaringType.AssemblyQualifiedName(), methodDefinition.Name);
            var returnType = methodDefinition.ReturnType.Resolve();

            if (!data.TryGetValue(returnType.AssemblyQualifiedName(), out List <SerializableMethod> methods))
            {
                methods = new List <SerializableMethod>();
                data[returnType.AssemblyQualifiedName()] = methods;
            }
            methods.Add(method);
        }
コード例 #4
0
        public void Analyze(AssemblyDefinition assemblyDefinition, ModuleDefinition moduleDefinition, TypeDefinition typeDefinition, MethodDefinition methodDefinition)
        {
            var attr = methodDefinition.GetAttribute <ActionAttribute>();

            if (attr.ConstructorArguments.Count < 2)
            {
                return;
            }
            TypeDefinition actionTypeDef = ((TypeReference)attr.ConstructorArguments[0].Value).Resolve();
            string         identifier    = (string)attr.ConstructorArguments[1].Value;
            TypeDefinition configTypeDef = attr.ConstructorArguments.Count >= 3 ? ((TypeReference)attr.ConstructorArguments[2].Value).Resolve() : null;
            string         displayName   = attr.ConstructorArguments.Count >= 4 ? (string)attr.ConstructorArguments[3].Value : null;
            string         subIdentifier = attr.ConstructorArguments.Count == 5 ? (string)attr.ConstructorArguments[4].Value : string.Empty;

            if (string.IsNullOrEmpty(subIdentifier))
            {
                subIdentifier = ActionSchema.DefaultSubIdentifier;
            }
            var actionTypeQualifiedName = actionTypeDef.FullName + ", " + actionTypeDef.Module.Assembly.FullName;
            var configTypeQualifiedName = configTypeDef == null ? null : configTypeDef.FullName + ", " + configTypeDef.Module.Assembly.FullName;
            var configType   = new SerializableType(configTypeQualifiedName);
            var method       = new SerializableMethod(typeDefinition.AssemblyQualifiedName(), methodDefinition.Name);
            var actionMethod = new ActionSchema.Action.Variant
            {
                config = configType,
                call   = method
            };

            if (!actions.TryGetValue(identifier, out ActionSchema.Action action))
            {
                action = new ActionSchema.Action
                {
                    identifier  = identifier,
                    displayName = displayName,
                    action      = new SerializableType(actionTypeQualifiedName)
                };
                actions[identifier] = action;
            }
            Debug.Log(method.Value);


            if (action.variants.ContainsKey(subIdentifier))
            {
                Debug.LogError($"Duplicate Sub-Identifiers found for identifier '{identifier}': '{subIdentifier}'");
            }
            action.variants[subIdentifier] = actionMethod;
        }
コード例 #5
0
ファイル: FiberTests.cs プロジェクト: wballard/BotBuilder
        public async Task Fiber_With_Wait_Is_Serializable()
        {
            // arrange
            IFiberLoop fiber  = new Fiber(new FrameFactory(new WaitFactory()));
            IMethod    method = new SerializableMethod();

            // act
            var value = 42;

            fiber.Call(method.CodeAsync, value);

            // assert
            AssertSerializable(ref fiber);
            var next = await fiber.PollAsync();

            Assert.AreEqual(Need.Done, next.Need);
        }
コード例 #6
0
ファイル: FiberTests.cs プロジェクト: gopal300/Localizedbot
        public async Task Fiber_With_Wait_Is_Serializable()
        {
            // arrange
            using (var container = Build())
            {
                var     fiber  = container.Resolve <IFiberLoop <C> >();
                IMethod method = new SerializableMethod();

                // act
                var value = 42;
                fiber.Call(method.CodeAsync, value);

                // assert
                AssertSerializable(container, ref fiber);
                var next = await fiber.PollAsync(Context, Token);

                Assert.AreEqual(Need.Done, next.Need);
            }
        }
コード例 #7
0
        public void Analyze(AssemblyDefinition assemblyDefinition, ModuleDefinition moduleDefinition, TypeDefinition typeDefinition, MethodDefinition methodDefinition)
        {
            var attr = methodDefinition.GetAttribute <FieldOperationAttribute>();

            if (attr.ConstructorArguments.Count != 5)
            {
                return;
            }
            string         identifier              = (string)attr.ConstructorArguments[0].Value;
            TypeDefinition configTypeDef           = ((TypeReference)attr.ConstructorArguments[1].Value).Resolve();
            string         displayName             = (string)attr.ConstructorArguments[2].Value;
            string         subIdentifier           = (string)attr.ConstructorArguments[3].Value;
            TypeDefinition outputTypeRef           = ((TypeReference)attr.ConstructorArguments[4].Value).Resolve();
            var            outputTypeQualifiedName = outputTypeRef.AssemblyQualifiedName();
            var            configTypeQualifiedName = configTypeDef?.AssemblyQualifiedName();
            var            configType              = new SerializableType(configTypeQualifiedName);
            var            outputType              = new SerializableType(outputTypeQualifiedName);
            var            method = new SerializableMethod(typeDefinition.AssemblyQualifiedName(), methodDefinition.Name);
            var            opCall = new FieldOperationSchema.Operation.Variant
            {
                displayName = displayName,
                configType  = configType,
                method      = method,
                outputType  = outputType
            };

            if (!operations.TryGetValue(identifier, out FieldOperationSchema.Operation op))
            {
                op = new FieldOperationSchema.Operation
                {
                    identifier = identifier
                };
                operations[identifier] = op;
            }
            if (op.callVariants.ContainsKey(subIdentifier))
            {
                Debug.LogError($"Duplicate Sub-Identifiers found for identifier '{identifier}': '{subIdentifier}'");
            }
            op.callVariants[subIdentifier] = opCall;
        }
コード例 #8
0
        public override VisualElement CreatePropertyGUI(SerializedProperty property)
        {
            var methods = GetMethods(fieldInfo, property);

            if (methods == null)
            {
                methods = new List <SerializableMethod>()
                {
                    default
                }
            }
            ;
            var current = new SerializableMethod(property.FindPropertyRelative("container.assemblyQualifiedName").stringValue, property.FindPropertyRelative("name").stringValue);

            var field = new PopupField <SerializableMethod>(property.displayName, methods, current, (method) => method.IsCreated ? $"{method.container.FullName}::{method.name}" : NO_TYPE, method => string.IsNullOrWhiteSpace(method.container.AssemblyQualifiedName) ? NO_TYPE : method.container.AssemblyQualifiedName.Substring(0, method.container.AssemblyQualifiedName.IndexOf(',')).Replace('.', '/') + $"::{method.name}");

            field.RegisterValueChangedCallback(evt =>
            {
                property.FindPropertyRelative("container.assemblyQualifiedName").stringValue = evt.newValue.container.AssemblyQualifiedName;
                property.FindPropertyRelative("name").stringValue = evt.newValue.name;
                property.serializedObject.ApplyModifiedProperties();
            });
            return(field);
        }