예제 #1
0
        /// <summary>
        /// Override the default property names and use the given ones instead of serialization.
        /// </summary>
        public void SetProperties(params string[] propertyNames)
        {
            Properties = new fsMetaProperty[propertyNames.Length];

            for (var i = 0; i < propertyNames.Length; ++i)
            {
                var members = ReflectedType.GetFlattenedMember(propertyNames[i]);

                if (members.Length == 0)
                {
                    // We silently fail here b/c there could be stripping applied
                    // on the platform that removed the member
                    continue;
                }
                if (members.Length > 1)
                {
                    throw new InvalidOperationException("More than one property matches " +
                                                        propertyNames[i] + " on " + ReflectedType.Name);
                }

                var member = members[0];
                if (member is FieldInfo)
                {
                    Properties[i] = new fsMetaProperty((FieldInfo)member);
                }
                else
                {
                    Properties[i] = new fsMetaProperty((PropertyInfo)member);
                }
            }
        }
예제 #2
0
        private static string GetConverterString(fsMetaProperty member)
        {
            if (member.OverrideConverterType == null)
            {
                return("null");
            }

            return(string.Format("typeof({0})",
                                 member.OverrideConverterType.CSharpName(/*includeNamespace:*/ true)));
        }