public TypeWrapper()

in Sharpmake/Resolver.cs [111:162]


            public TypeWrapper(Type type)
            {
                if (!type.IsDefined(typeof(Resolvable), true))
                    return;

                MemberInfo[] memberInfos = type.GetMembers();

                foreach (MemberInfo memberInfo in memberInfos)
                {
                    if (memberInfo.MemberType != MemberTypes.Field && memberInfo.MemberType != MemberTypes.Property)
                        continue;

                    if (memberInfo.IsDefined(typeof(SkipResolveOnMember), false))
                        continue;

                    Type memberType = null;
                    if (memberInfo.MemberType == MemberTypes.Field)
                    {
                        FieldInfo fieldInfo = memberInfo as FieldInfo;
                        Type fieldType = fieldInfo.FieldType;
                        if (fieldType.IsClass ||
                            (CanWriteFieldValue(fieldInfo) &&
                             (fieldType == typeof(string) ||
                              fieldType == typeof(Strings) ||
                              fieldType.IsAssignableFrom(typeof(IList<string>)))))
                        {
                            memberType = fieldInfo.FieldType;
                        }
                    }
                    else if (memberInfo.MemberType == MemberTypes.Property)
                    {
                        PropertyInfo propertyInfo = memberInfo as PropertyInfo;
                        Type propertyType = propertyInfo.PropertyType;
                        if (propertyInfo.CanRead &&
                            (propertyType.IsClass ||
                             propertyType == typeof(Strings) ||
                             (propertyType == typeof(string) && propertyInfo.CanWrite) ||
                             propertyType.IsAssignableFrom(typeof(IList<string>))))
                        {
                            memberType = propertyType;
                        }
                    }
                    if (memberType != null)
                    {
                        if (MemberInfos == null)
                        {
                            MemberInfos = new List<MemberInfo>(memberInfos.Length);
                        }
                        MemberInfos.Add(memberInfo);
                    }
                }
            }