GetValue() public method

public GetValue ( object target ) : object
target object
return object
Example #1
0
        internal void WriteField(object target, MemberInfo meminfo)
        {
            var value = meminfo.GetValue(target);

            // Skip null fields right away (covers nullable primitive types)
            if (value == null)
            {
                return;
            }

            // Skip null form references (that are not a list of references) unless it is a required field
            if (meminfo.IsReference && !meminfo.IsListType && (uint)value == 0 && !meminfo.IsRequired)
            {
                return;
            }

            string fieldName = meminfo.FieldNames.First();

            if (meminfo.IsPrimitiveType)
            {
                // Primitive types have only one propery name
                if (meminfo.IsListType)
                {
                    foreach (var item in (IEnumerable)value)
                    {
                        BeginPropertySegment(fieldName);
                        WritePrimitiveField(meminfo, item);
                        EndSegment();
                    }
                }
                else
                {
                    BeginPropertySegment(fieldName);
                    WritePrimitiveField(meminfo, value);
                    EndSegment();
                }
            }
            else
            {
                if (meminfo.FieldType.IsSubclassOf(typeof(Compound)))
                {
                    if (meminfo.IsListType)
                    {
                        foreach (var item in (IEnumerable)value)
                        {
                            WriteCompoundField((Compound)item);
                        }
                    }
                    else
                    {
                        WriteCompoundField((Compound)value);
                    }
                }
                else
                {
                    if (meminfo.IsListType)
                    {
                        foreach (var item in (IEnumerable)value)
                        {
                            WriteStructuredField((Field)item, fieldName);
                        }
                    }
                    else
                    {
                        WriteStructuredField((Field)value, fieldName);
                    }
                }
            }
        }
Example #2
0
        internal void WriteField(object target, MemberInfo meminfo)
        {
            var value = meminfo.GetValue(target);

            // Skip null fields right away (covers nullable primitive types)
            if (value == null)
                return;

            // Skip null form references (that are not a list of references) unless it is a required field
            if (meminfo.IsReference && !meminfo.IsListType && (uint)value == 0 && !meminfo.IsRequired)
                return;

            string fieldName = meminfo.FieldNames.First();
            if (meminfo.IsPrimitiveType)
            {
                // Primitive types have only one propery name
                if (meminfo.IsListType)
                {
                    foreach (var item in (IEnumerable)value)
                    {
                        BeginPropertySegment(fieldName);
                        WritePrimitiveField(meminfo, item);
                        EndSegment();
                    }
                }
                else
                {
                    BeginPropertySegment(fieldName);
                    WritePrimitiveField(meminfo, value);
                    EndSegment();
                }
            }
            else
            {
                if (meminfo.FieldType.IsSubclassOf(typeof(Compound)))
                {
                    if (meminfo.IsListType)
                    {
                        foreach (var item in (IEnumerable)value)
                        {
                            WriteCompoundField((Compound)item);
                        }
                    }
                    else
                    {
                        WriteCompoundField((Compound)value);
                    }
                }
                else
                {
                    if (meminfo.IsListType)
                    {
                        foreach (var item in (IEnumerable)value)
                        {
                            WriteStructuredField((Field)item, fieldName);
                        }
                    }
                    else
                    {
                        WriteStructuredField((Field)value, fieldName);
                    }
                }
            }
        }