示例#1
0
        private void AddGetCodeItemsMethod()
        {
            if (!apps.Any())
            {
                return;
            }
            var target = MyStruct;
            var optionsToStringCode = new CsCodeWriter();

            for (var index = 0; index < apps.Count; index++)
            {
                if (index > 0)
                {
                    optionsToStringCode.WriteLine();
                }
                var action = apps[index];
                action(optionsToStringCode, target);
            }

            var m = target
                    .AddMethod("GetCodeItems", MyNamespace.GetTypeName <IEnumerable <string> >())
                    .WithBody(optionsToStringCode);

            m.AddParam <OptionPreference>(preferLongNameVariable, ExtensionsClass).ConstValue =
                ExtensionsClass.GetEnumValueCode(OptionPreference.Short);
        }
示例#2
0
 private SingleTaskEnumsGenerator(ISingleTaskEnumsGeneratorContext context, EnumsGeneratorItem item)
 {
     _item         = item;
     _context      = context;
     _lazyMyStruct = new Lazy <CsClass>(() =>
     {
         var res       = MyNamespace.GetOrCreateClass(OptionsClassName);
         res.IsPartial = true;
         return(res);
     });
     _lazyMyNamespace     = new Lazy <CsNamespace>(() => _context.GetOrCreateNamespace(_item.Namespace));
     _lazyMyEnum          = new Lazy <CsEnum>(() => new CsEnum(MyEnumTypeName));
     _lazyExtensionsClass = new Lazy <CsClass>(() =>
     {
         var extensionsClass = MyNamespace.GetOrCreateClass(_item.EnumName + "Extensions")
                               .WithStatic();
         extensionsClass.IsPartial = true;
         return(extensionsClass);
     });
 }
示例#3
0
        private void CreateCode()
        {
            var hasEnum = CreateEnumAndConversionMethods();

            if (hasEnum)
            {
                Struct_AddOptionsProperty();
            }

            foreach (var i in _item.ImplementedInterfaces)
            {
                MyStruct.ImplementedInterfaces.Add(MyNamespace.GetTypeName(i));
            }

            CreateNamedParameters();
            AddGetCodeItemsMethod();

            foreach (var action in _item.CustomCreators)
            {
                action(MyStruct);
            }
        }
示例#4
0
    private void Start()
    {
        myGameObject = GameObject.Find("MyGameObject");
        MyNamespace mono1 = myGameObject.GetComponent <MyNamespace>();

        if (mono1 != null)
        {
            string mono1Msg = mono1.publicMsg;
            if (mono1Msg != null)
            {
                Debug.Log(mono1Msg);
            }
            else
            {
                Debug.Log("Mono1 is not null, but the message is.");
            }
        }
        else
        {
            Debug.Log("Mono1 is null indicating that a MonoBehaviour inside a namespace cannot be accessed.");
        }
    }
示例#5
0
        private bool CreateEnumAndConversionMethods()
        {
            var parts = _item.OwnerClasses;
            var conflictsCodeMethod = Extensions_CheckConflictsCode(_item);

            var optionsToStringCode = new CsCodeWriter();

            optionsToStringCode.WriteLine("// generator : " + GetType().Name);
            if (!string.IsNullOrEmpty(conflictsCodeMethod))
            {
                optionsToStringCode.WriteLine($"{conflictsCodeMethod}({valueVariable});");
            }
            var fb = new EnumFlagsBuilder(MyEnum);

            fb.AddFlagsAttribute(MyNamespace);

            var enumSource = from q in _item.Options.Values
                             where string.IsNullOrEmpty(q.Parameter?.Value)
                             select q;
            var generate = false;

            foreach (var option in enumSource)
            {
                generate = true;
                var enumItem = new CsEnumItem(option.GetCsName())
                {
                    Description = option.FullDescription,
                };
                var stringValue = GetStringValue(preferLongNameVariable, option, ExtensionsClass);
                optionsToStringCode.WriteDescriptionComment(option);
                var condition = GetEnumCondition(valueVariable, MyEnum, enumItem);
                optionsToStringCode.SingleLineIf(condition, $"yield return {stringValue};");
                MyStruct_AddWithMethod(enumItem, fb.Value == 1);

                fb.Append(enumItem);

                {
                    apps.Add((w, r) =>
                    {
                        var stringValue = GetStringValue(preferLongNameVariable, option, ExtensionsClass);
                        w.WriteDescriptionComment(option);
                        var condition = GetEnumCondition(flagsPropertyName, MyEnum, enumItem);
                        w.SingleLineIf(condition, $"yield return {stringValue};");
                    });
                }
            }

            if (!generate)
            {
                return(false);
            }
            {
                var m = ExtensionsClass
                        .AddMethod("OptionsToString", MyNamespace.GetTypeName <IEnumerable <string> >())
                        .WithStatic()
                        .WithBody(optionsToStringCode);
                m.AddParam(valueVariable, MyEnumTypeName).UseThis = true;
                m.AddParam <OptionPreference>(preferLongNameVariable, ExtensionsClass).ConstValue =
                    ExtensionsClass.GetEnumValueCode(OptionPreference.Short);
            }

            AddEnumToOutput(parts, MyNamespace, MyEnum);
            return(true);
        }