FlatRedBall.Content.MappingMethods.GetMappingForType C# (CSharp) Method

GetMappingForType() public method

public GetMappingForType ( Type typeOfObject ) : MemberMapping
typeOfObject System.Type
return MemberMapping
        public MemberMapping GetMappingForType(Type typeOfObject)
        {
            if (typeOfObject.IsEnum)
            {
                typeOfObject = typeof(Enum);
            }

            if(mMappings.ContainsKey(typeOfObject))
            {
                return mMappings[typeOfObject];
            }
            else if (typeOfObject.IsGenericType &&
                mMappingsForGenerics.ContainsKey(typeOfObject.GetGenericTypeDefinition()))
            {
                return mMappingsForGenerics[typeOfObject.GetGenericTypeDefinition()];
            }
            else if (BreakdownUnknownTypes)
            {
                if (typeOfObject.GetInterface("ICollection", true) != null)
                {
                    return BreakdownUnknownTypeList;
                }

                return BreakdownUnknownType;
            }
            else
            {
                throw new Exception("Mapping for object was not provided. You should use HasMethodForType to check before calling this method.");
            }
        }

Usage Example

        private void MapMember(MemberInfo member, MappingMethods mappingMethods, object value)
        {
            Type typeOfMember;

            #region PropertyInfo
            if (member.MemberType == MemberTypes.Property)
            {
                typeOfMember = (member as PropertyInfo).PropertyType;
                if (mappingMethods.HasMethodForType(typeOfMember))
                {
                    MemberMapping methodToCall = mappingMethods.GetMappingForType(typeOfMember);

                    methodToCall(member as PropertyInfo, value);
                }
                else if (mappingMethods.BreakdownUnknownTypes == false)
                {
                    throw new ArgumentException("ObjectMapper found a type to map that it cannot handle," +
                                                " fix this by adding a Mapping to your MappingMethods class");
                }
                else if (typeOfMember.IsPrimitive == false)
                {
                    if (value == null)
                    {
                        value = System.Activator.CreateInstance((member as PropertyInfo).PropertyType);
                    }
                    this.MapObject(value, mappingMethods, typeOfMember);
                }
            }
            #endregion

            #region FieldInfo
            else if (member.MemberType == MemberTypes.Field)
            {
                typeOfMember = (member as FieldInfo).FieldType;
                if (mappingMethods.HasMethodForType(typeOfMember))
                {
                    MemberMapping methodToCall = mappingMethods.GetMappingForType(typeOfMember);

                    methodToCall(member as FieldInfo, value);
                }
                else if (mappingMethods.BreakdownUnknownTypes == false)
                {
                    throw new ArgumentException("ObjectMapper found a type to map that it cannot handle," +
                                                " fix this by adding a Mapping to your MappingMethods class");
                }
                else if (typeOfMember.IsPrimitive == false)
                {
                    if (value == null)
                    {
                        value = System.Activator.CreateInstance((member as FieldInfo).FieldType);
                    }
                    this.MapObject(value, mappingMethods, typeOfMember);
                }
            }
            #endregion

            else //Not a Property or Field, ERROR! (this should never happen)
            {
                throw new Exception("MemberType not accepted, MapObject only accepts Fields and Properties.");
            }
        }
All Usage Examples Of FlatRedBall.Content.MappingMethods::GetMappingForType