コード例 #1
0
        internal static GenerateResults Generate(Type baseType, SortedSet <string> namespaces,
                                                 NameGenerator generator, MethodInformationBuilder informationBuilder,
                                                 bool isMake, bool hasEvents)
        {
            var requiresObsoleteSuppression = false;

            var generatedProperties = new List <string>();

            foreach (var property in baseType.GetMockableProperties(generator))
            {
                var baseProperty = property.Value;

                namespaces.Add(baseProperty.PropertyType.Namespace);
                var indexers          = baseProperty.GetIndexParameters();
                var propertyMethod    = baseProperty.GetDefaultMethod();
                var methodInformation = informationBuilder.Build(new MockableResult <MethodInfo>(
                                                                     propertyMethod, RequiresExplicitInterfaceImplementation.No));

                if (propertyMethod.IsPublic)
                {
                    var @override = methodInformation.DescriptionWithOverride.Contains("override", StringComparison.Ordinal) ? "override " : string.Empty;
                    requiresObsoleteSuppression = PropertiesGenerator.HandlePublicProperty(
                        namespaces, isMake, hasEvents, requiresObsoleteSuppression, generatedProperties, property, baseProperty, indexers, @override);
                }
                else if (!propertyMethod.IsPrivate && propertyMethod.IsAbstract)
                {
                    requiresObsoleteSuppression = PropertiesGenerator.HandleNonPrivateAbstractProperty(
                        namespaces, requiresObsoleteSuppression, generatedProperties, property, baseProperty, indexers, propertyMethod);
                }
            }

            return(new GenerateResults(string.Join(Environment.NewLine, generatedProperties),
                                       requiresObsoleteSuppression, false));
        }