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); }
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); }); }
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); } }
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."); } }
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); }