public void TestMethodInClass()
        {
            var info       = new AssemblyBrowserLib.TypeInfo(typeof(Class3));
            var methodInfo = new TypeMemberInfo(typeof(Class3).GetMember("DoSmt")[0]);

            Assert.AreEqual(info.Members[0].Info, methodInfo.Info);
        }
Ejemplo n.º 2
0
        protected virtual void SerializeElement(XmlWriter writer, object obj, TypeMemberInfo element)
        {
            object entityValue = GetEntityValue(obj, element);

            if (Settings.OmitMembersWithDefaultValues)
            {
                if (element.HasDefaultValue(entityValue))
                {
                    return;
                }
            }

            writer.WriteStartElement(element.EntityName);

            // now we resolve a type serializer to do the work
            ITypeSerializer typeSerializer =
                Factory.CallMethod(new[] { element.DataType }, "GetTypeSerializer") as ITypeSerializer;

            if (typeSerializer != null)
            {
                typeSerializer.Serialize(writer, element.DataType, entityValue);
            }
            else

            // Since there was no bound custom type serializer we default to the GenericTypeSerializer
            {
                var defaultSerializer = Factory.GetDefaultSerializer();
                defaultSerializer.Serialize(writer, element.DataType, entityValue);
            }

            writer.WriteEndElement();
        }
Ejemplo n.º 3
0
        public void Map(ref object local, DiffPart diff, MapContext context)
        {
            if (context.Path.Count == 0)
            {
                local = diff.DiffType == DiffPartType.Exclude ? TypeHelpers.CreateDefaultState(context.Type) : diff.Value;
            }
            else
            {
                var member = TypeMemberInfo.GetPublicMember(local.GetType(), context.Path.Pop() as string);
                var fi     = member as FieldInfo;
                if (fi != null)
                {
                    object fieldLocal = fi.GetValue(local);
                    Type   type       = (fieldLocal == null) ? fi.FieldType : fieldLocal.GetType();

                    if (diff.DiffType == DiffPartType.Exclude)
                    {
                        if (context.Path.Count == 0)
                        {
                            fi.SetValue(local, TypeHelpers.CreateDefaultState(type));
                        }
                        else
                        {
                            context.Resolvers.FindResolver(type).Map(ref fieldLocal, diff, new MapContext(context, type));
                            // fi.SetValue(local, fieldLocal);
                        }
                    }
                    else
                    {
                        context.Resolvers.FindResolver(type).Map(ref fieldLocal, diff, new MapContext(context, type));
                        fi.SetValue(local, fieldLocal);
                    }
                }
                var pi = member as PropertyInfo;
                if (pi != null)
                {
                    object propertyLocal = pi.GetValue(local);
                    Type   type          = (propertyLocal == null) ? pi.PropertyType : propertyLocal.GetType();

                    if (diff.DiffType == DiffPartType.Exclude)
                    {
                        if (context.Path.Count == 0)
                        {
                            pi.SetValue(local, TypeHelpers.CreateDefaultState(pi.PropertyType));
                        }
                        else
                        {
                            context.Resolvers.FindResolver(type).Map(ref propertyLocal, diff, new MapContext(context, type));
                            // pi.SetValue(local, propertyLocal);
                        }
                    }
                    else
                    {
                        context.Resolvers.FindResolver(type).Map(ref propertyLocal, diff, new MapContext(context, type));
                        pi.SetValue(local, propertyLocal);
                    }
                }
            }
        }
 public static MemberInfo getInfo(TypeInfo type) {
     var result = type.getUserData(typeof(TypeMemberInfo));
     if (result == null) {
         result = new TypeMemberInfo(type);
         type.addUserData(result);
     }
     return result;
 }
Ejemplo n.º 5
0
        public void SetWorkingMember(TypeMemberInfo member)
        {
            if (member == null)
            {
                throw new ArgumentNullException("member");
            }

            CaptureStack.Peek().CurrentMember = member;
        }
Ejemplo n.º 6
0
        protected override object GetEntityValue(object entity, TypeMemberInfo memberInfo)
        {
            var result = base.GetEntityValue(entity, memberInfo);

            if (memberInfo.Name == "<Name>k__BackingField")
            {
                result = string.Format("{0} {1}", Title, result);
            }
            return(result);
        }
Ejemplo n.º 7
0
        public static MemberInfo getInfo(TypeInfo type)
        {
            var result = type.getUserData(typeof(TypeMemberInfo));

            if (result == null)
            {
                result = new TypeMemberInfo(type);
                type.addUserData(result);
            }
            return(result);
        }
Ejemplo n.º 8
0
        public DiffChain Resolve(object local, object remote, ResolveContext context)
        {
            if (local == null && remote == null)
            {
                return(DiffChain.Empty());
            }

            IEnumerable <MemberInfo> members = TypeMemberInfo.GetAllPublicMembers(context.Type);
            var result = new DiffChain();

            if (local == null)
            {
                result.Add(context.CreateDiffFromCurrentPath(remote));
            }
            else if (remote == null)
            {
                result.Add(context.CreateDiffFromCurrentPath());
            }
            else
            {
                foreach (var member in members)
                {
                    if (IgnoreMembersLogic.IgnoredByAttribute(context.Options, member))
                    {
                        continue;
                    }
                    var fi = member as FieldInfo;
                    if (fi != null)
                    {
                        var fieldLocal  = fi.GetValue(local);
                        var fieldRemote = fi.GetValue(remote);
                        var memberType  = GetType(fieldLocal, fieldRemote);
                        if (memberType != null)
                        {
                            result.Add(context.Resolvers.FindResolver(memberType).Resolve(fieldLocal, fieldRemote, new ResolveContext(context, member.Name, memberType)));
                        }
                        continue;
                    }
                    var pi = member as PropertyInfo;
                    if (pi != null)
                    {
                        var propertyLocal  = pi.GetValue(local);
                        var propertyRemote = pi.GetValue(remote);
                        var memberType     = GetType(propertyLocal, propertyRemote);
                        if (memberType != null)
                        {
                            result.Add(context.Resolvers.FindResolver(memberType).Resolve(propertyLocal, propertyRemote, new ResolveContext(context, member.Name, memberType)));
                        }
                    }
                }
            }
            result.Lock();
            return(result);
        }
    public SameAssemblyBaseEnumState(INamedTypeSymbol type, ITypeSymbol keyType)
    {
        _type = type;

        TypeFullyQualified     = type.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
        TypeMinimallyQualified = type.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat);

        Settings       = new EnumSettings(type.FindEnumGenerationAttribute());
        InnerTypesInfo = new TypeMemberInfo(type);

        ConstructorArguments = GetConstructorArguments(type, Settings.CreateKeyProperty(keyType));
        Items = type.EnumerateEnumItems().Select(InstanceMemberInfo.CreateFrom).ToList();
    }
Ejemplo n.º 10
0
    public BaseEnumState(INamedTypeSymbol type)
    {
        _type = type;

        TypeFullyQualified     = type.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
        TypeMinimallyQualified = type.ToDisplayString(SymbolDisplayFormat.MinimallyQualifiedFormat);

        Settings       = new EnumSettings(type.FindEnumGenerationAttribute());
        InnerTypesInfo = new TypeMemberInfo(type);

        ConstructorArguments = GetConstructorArguments(type);
        Items = _type.EnumerateEnumItems().Select(DefaultMemberState.CreateFrom).ToList();
    }
Ejemplo n.º 11
0
        public void CaptureLateBinding(int id, TypeMemberInfo info)
        {
            if (id == 0)
            {
                throw new ArgumentNullException("id");
            }
            if (info == null)
            {
                throw new ArgumentNullException("info");
            }

            CaptureStack.Peek().CaptureNodes.Add(new CaptureNode(id, info));
        }
Ejemplo n.º 12
0
        protected virtual object GetEntityValue(object entity, TypeMemberInfo memberInfo)
        {
            entity = entity.WrapIfValueType();
            switch (memberInfo.Type)
            {
            case TypeMemberInfo.MemberType.Field:
                return(entity.GetFieldValue(memberInfo.Name));

            case TypeMemberInfo.MemberType.Property:
                return(entity.GetPropertyValue(memberInfo.Name));

            default:
                throw new SerializerException("Cannot serialize unknown member type");
            }
        }
Ejemplo n.º 13
0
        public GetTypeResponseMessage GetTypeInfo()
        {
            var msg = new GetTypeResponseMessage {
                IndexerLength = this.target.Length,
                Members = new List<TypeMemberInfo>()
            };

            var tmi = new TypeMemberInfo {
                Name = "length",
                //MemberId = this.target.Length,
                DispatchType = DispatchType.PropertyGet
            };
            msg.Members.Add(tmi);
            return msg;
        }
Ejemplo n.º 14
0
 public static MemberInfoModel ConvertFrom(TypeMemberInfo member)
 {
     return(new MemberInfoModel
     {
         Id = member.ID,
         Name = member.Name,
         Value = member.Value,
         Comment = member.Comment,
         Tags = member.Tags.ToString(),
         DerivedTags = member.DerivedTags.ToString(),
         IsEnabled = member.IsEnabled,
         Creator = member.CreationInfo.ID,
         CreatedDateTime = member.CreationInfo.DateTime,
         Modifier = member.ModificationInfo.ID,
         ModifiedDateTime = member.ModificationInfo.DateTime
     });
 }
Ejemplo n.º 15
0
        private IDictionary <string, object> GetMemberInfo(TypeMemberInfo memberInfo)
        {
            var props = new Dictionary <string, object>
            {
                { nameof(memberInfo.ID), memberInfo.ID },
                { nameof(memberInfo.Name), memberInfo.Name },
                { nameof(memberInfo.Value), memberInfo.Value },
                { nameof(memberInfo.Comment), memberInfo.Comment },
                { nameof(memberInfo.Tags), $"{memberInfo.Tags}" },
                { nameof(memberInfo.DerivedTags), $"{memberInfo.DerivedTags}" },
                { nameof(memberInfo.IsEnabled), memberInfo.IsEnabled },
                { CremaSchema.Creator, memberInfo.CreationInfo.ID },
                { CremaSchema.CreatedDateTime, memberInfo.CreationInfo.DateTime },
                { CremaSchema.Modifier, memberInfo.ModificationInfo.ID },
                { CremaSchema.ModifiedDateTime, memberInfo.ModificationInfo.DateTime }
            };

            return(props);
        }
Ejemplo n.º 16
0
        public static void CreateTypeMember(CodeTypeDeclaration classType, TypeMemberInfo typeMemberInfo, CodeGenerationInfo generationInfo)
        {
            var cmm = new CodeMemberField();

            cmm.Name           = typeMemberInfo.Name;
            cmm.InitExpression = new CodePrimitiveExpression(typeMemberInfo.Value);
            if (generationInfo.OmitComment == false)
            {
                cmm.Comments.AddSummary(typeMemberInfo.Comment);
            }
            if (generationInfo.OmitSignatureDate == false)
            {
                cmm.Comments.Add(CremaCodeGenerator.Creator, typeMemberInfo.CreationInfo.ID);
                cmm.Comments.Add(CremaCodeGenerator.CreatedDateTime, typeMemberInfo.CreationInfo.DateTime);
                cmm.Comments.Add(CremaCodeGenerator.Modifier, typeMemberInfo.ModificationInfo.ID);
                cmm.Comments.Add(CremaCodeGenerator.ModifiedDateTime, typeMemberInfo.ModificationInfo.DateTime);
            }

            classType.Members.Add(cmm);
        }
Ejemplo n.º 17
0
        private static void CreateDataMember(CodeTypeDeclaration classType, TypeMemberInfo typeMemberInfo, CodeGenerationInfo generationInfo)
        {
            var cmm = new CodeMemberField();

            cmm.Name           = typeMemberInfo.Name;
            cmm.InitExpression = new CodeSnippetExpression(generationInfo.EnumFomrat(typeMemberInfo.Value));
            if (generationInfo.NoComment == false)
            {
                cmm.Comments.AddSummary(typeMemberInfo.Comment);
            }
            if (generationInfo.NoChanges == false)
            {
                cmm.Comments.Add(CremaSchema.Creator, typeMemberInfo.CreationInfo.ID);
                cmm.Comments.Add(CremaSchema.CreatedDateTime, typeMemberInfo.CreationInfo.DateTime);
                cmm.Comments.Add(CremaSchema.Modifier, typeMemberInfo.ModificationInfo.ID);
                cmm.Comments.Add(CremaSchema.ModifiedDateTime, typeMemberInfo.ModificationInfo.DateTime);
            }

            classType.Members.Add(cmm);
        }
        public void TestMethodInfo()
        {
            TypeMemberInfo info = new TypeMemberInfo(typeof(UnitTest1).GetMember("Method1")[0]);

            Assert.AreEqual("Method Method1()", info.Info);
        }
Ejemplo n.º 19
0
 /// <summary>
 ///    Initializes a new instance of the <see cref="CaptureNode" /> class.
 /// </summary>
 /// <param name="id"></param>
 /// <param name="memberInfo"></param>
 /// <param name="indices"></param>
 public CaptureNode(int id, TypeMemberInfo memberInfo, int[] indices)
 {
     Id         = id;
     MemberInfo = memberInfo;
     Indices    = indices;
 }
Ejemplo n.º 20
0
        public GetTypeResponseMessage GetTypeInfo()
        {
            GetTypeResponseMessage msg = new GetTypeResponseMessage {
                IndexerLength = 0,
                Members = new List<TypeMemberInfo>()
            };

            foreach (KeyValuePair<string, int> item in idsByName) {
                MemberInfo mi = GetMember(item.Value);

                DispatchType dt;
                if (mi is MethodInfo) {
                    dt = DispatchType.Method;
                }
                else if (mi is PropertyInfo) {
                    dt = DispatchType.PropertyGet | DispatchType.PropertySet;
                }
                else {
                    throw new InvalidOperationException();
                }

                TypeMemberInfo tmi = new TypeMemberInfo {
                    Name = item.Key,
                    //MemberId = item.Value,
                    DispatchType = dt
                };
                msg.Members.Add(tmi);
            }

            return msg;
        }
Ejemplo n.º 21
0
 /// <summary>
 ///    Initializes a new instance of the <see cref="XmlNodeMap" /> class.
 /// </summary>
 internal XmlNodeMap(string name, TypeMemberInfo.MemberType memberType, Type dataType)
 {
     Info = new TypeMemberInfo(name, memberType, dataType);
 }
Ejemplo n.º 22
0
 /// <summary>
 ///    Initializes a new instance of the <see cref="CaptureNode" /> class.
 /// </summary>
 /// <param name="id"></param>
 /// <param name="memberInfo"></param>
 public CaptureNode(int id, TypeMemberInfo memberInfo)
 {
     Id         = id;
     MemberInfo = memberInfo;
     Indices    = null;
 }
        public void TestFieldInfo()
        {
            TypeMemberInfo info = new TypeMemberInfo(typeof(UnitTest1).GetField("_field1", BindingFlags.NonPublic | BindingFlags.Instance));

            Assert.AreEqual("Field System.Byte _field1", info.Info);
        }
        public void TestPropertyInfo()
        {
            TypeMemberInfo info = new TypeMemberInfo(typeof(UnitTest1).GetProperty("Property1"));

            Assert.AreEqual("Property System.String Property1", info.Info);
        }