示例#1
0
 /// <summary>
 /// Should be called after a node is created to set parent referneces
 /// This allows interfaces, volumes, etc. to poll through the provider
 /// </summary>
 public void SetReferences()
 {
     Interfaces?.ForEach(i => i.Node = this);
     Volumes?.ForEach(v => v.Node    = this);
     Apps?.ForEach(a => a.Node       = this);
     Services?.ForEach(s => s.Node   = this);
 }
示例#2
0
 public virtual void Load()
 {
     CRUDFunctions.Load <Entity>(this);
     Fields.ForEach(e => e.Load());
     Actions.ForEach(e => e.Load());
     Enumerators.ForEach(e => e.Load());
     Attributes.ForEach(e => e.Load());
     Interfaces.ForEach(e => e.Load());
     __Memento = GetData();
 }
示例#3
0
        /// <summary>
        /// Should be called after a node is created to set parent referneces
        /// and removed ignored interfaces, volumes, etc.
        ///
        /// This allows interfaces, volumes, etc. to poll through the provider
        /// </summary>
        public void AfterInitialize()
        {
            if (Interfaces != null)
            {
                var ignoredInterfaceRegex = GetSetting(s => s.IgnoredInterfaceRegEx);
                if (ignoredInterfaceRegex != null)
                {
                    Interfaces.RemoveAll(i => ignoredInterfaceRegex.IsMatch(i.Id));
                }

                Interfaces.ForEach(i => i.Node = this);
            }

            Volumes?.ForEach(v => v.Node  = this);
            Apps?.ForEach(a => a.Node     = this);
            Services?.ForEach(s => s.Node = this);
        }
示例#4
0
        /// <summary>
        /// 文字列取得
        /// </summary>
        /// <param name="index">前スペース数</param>
        /// <returns>文字列</returns>
        public override string ToString(int index = 0)
        {
            var result     = new StringBuilder();
            var indexSpace = string.Concat(Enumerable.Repeat("  ", index));

            foreach (var comment in Comments)
            {
                result.Append(indexSpace);
                result.AppendLine($"{comment}");
            }

            foreach (var modifier in Modifiers)
            {
                result.Append(indexSpace);
                result.Append($"{modifier} ");
            }
            result.Append($"interface {Name}");

            // インターフェイス
            if (Interfaces.Any())
            {
                result.Append(" : ");

                Interfaces.ForEach(item => {
                    if (Interfaces.IndexOf(item) > 0)
                    {
                        result.Append(", ");
                    }
                    item.ForEach(expression =>
                    {
                        result.Append(expression.Name);
                    });
                });
            }
            result.AppendLine();
            result.Append(indexSpace);
            result.AppendLine("{");

            Members.ForEach(member => result.AppendLine(member.ToString(index + 1)));

            result.Append(indexSpace);
            result.AppendLine("}");

            return(result.ToString());
        }
示例#5
0
        public void Commit()
        {
            if (BaseType != null && BaseType == _bfCache.Types.First(t => t.FullName == "System.Object"))
            {
                BaseType.Commit();

                Append(BaseType);

                BaseType.TypesUsed.ForEach(Append);
            }

            Interfaces.ForEach(Append);

            Fields.ForEach(t => t.TypesUsed.ForEach(Append));
            Methods.ForEach(t => t.TypesUsed.ForEach(Append));
            Events.ForEach(t => t.TypesUsed.ForEach(Append));

            TypesUsed.Clear();
        }
        /// <summary>
        /// Store properties and methods of Type(obj) into a string
        /// </summary>
        /// <param name="includeSelfRefs"></param>
        /// <returns></returns>
        public string Info(bool includeSelfRefs)
        {
            /*  Name [ArchType] : BaseType, Interface_1, ...
             *  Classes:
             *      NestedType_1_Name ...
             *  Fields:
             *      Field_1_Name [Field_1_Type]
             *          <-- ReferencingTypeA:ReferencingMember_1 ...
             *  Properties:
             *      Property_1_Name [Property_1_Type] {get, set}
             *          --> ReferencedTypeA::ReferencedMember_1 ...
             *          <-- ReferencingTypeA:ReferencingMember_1 ...
             *  Constructors:
             *      Ctor_1_Name <Param_1_Name, ...>
             *          ---> ReferencedTypeA::ReferencedMember_1 ...
             *          <-- ReferencingTypeA:ReferencingMember_1 ...
             *  Methods:
             *      Method_1_Name [Method_1_ReturnType] <Param_1_Name, ...>
             *          --> ReferencedTypeA::ReferencedMember_1 ...
             *          <-- ReferencingTypeA:ReferencingMember_1 ...
             *  Events:
             *      Event_1_Name <Param_1_Name, ...>
             *          --> ReferencedTypeA::ReferencedMember_1 ...
             *          <-- ReferencingTypeA:ReferencingMember_1 ...
             */

            string headIndent = "\n";
            string info       = $"{FullName} [{Elem}]";

            if (Class.BaseType != null)
            {
                info += " : " + Class.BaseType.Name;
            }
            Interfaces.ForEach(I => info += $" , {I.Name}");

            if (Members.Exists(M => M.Member.MemberType == MemberTypes.NestedType))
            {
                info += $"{headIndent}Nested types:";
                Members.FindAll(M => M.Member.MemberType == MemberTypes.NestedType)
                .ForEach(M => info += M.GetInfo(includeSelfRefs));
            }
            if (Members.Exists(M => M.Member.MemberType == MemberTypes.Field && !M.Name.Contains("k__BackingField")))
            {
                info += $"{headIndent}Fields:";
                Members.FindAll(M => M.Member.MemberType == MemberTypes.Field && !M.Name.Contains("k__BackingField"))
                .ForEach(M => info += M.GetInfo(includeSelfRefs));
            }
            if (Members.Exists(M => M.Member.MemberType == MemberTypes.Property))
            {
                info += $"{headIndent}Properties:";
                Members.FindAll(M => M.Member.MemberType == MemberTypes.Property)
                .ForEach(M => info += M.GetInfo(includeSelfRefs));
            }
            if (Members.Exists(M => M.Member.MemberType == MemberTypes.Constructor))
            {
                info += $"{headIndent}Constructors:";
                Members.FindAll(M => M.Member.MemberType == MemberTypes.Constructor)
                .ForEach(M => info += M.GetInfo(includeSelfRefs));
            }
            if (Members.Exists(M => M.Member.MemberType == MemberTypes.Method && !M.Name.Contains("get_") && !M.Name.Contains("set_")))
            {
                info += $"{headIndent}Methods:";
                Members.FindAll(M => M.Member.MemberType == MemberTypes.Method && !M.Name.Contains("get_") && !M.Name.Contains("set_"))
                .ForEach(M => info += M.GetInfo(includeSelfRefs));
            }
            if (Members.Exists(M => M.Member.MemberType == MemberTypes.Event))
            {
                info += $"{headIndent}Events:";
                Members.FindAll(M => M.Member.MemberType == MemberTypes.Event)
                .ForEach(M => info += M.GetInfo(includeSelfRefs));
            }
            // AllReferences(includeSelfRefs); //as backup

            return(info);
        }