Pomona.Common.ExtendedResources.ExtendedResourceInfo.InitializeProperty C# (CSharp) Метод

InitializeProperty() приватный Метод

private InitializeProperty ( PropertyInfo extendedProp ) : ExtendedProperty
extendedProp System.Reflection.PropertyInfo
Результат ExtendedProperty
        private ExtendedProperty InitializeProperty(PropertyInfo extendedProp)
        {
            var serverProp = ServerType.GetPropertySearchInheritedInterfaces(extendedProp.Name);
            var extPropType = extendedProp.PropertyType;
            if (serverProp != null)
            {
                var serverPropType = serverProp.PropertyType;
                ExtendedResourceInfo propExtInfo;
                if (this.mapper.TryGetExtendedResourceInfo(extPropType, out propExtInfo)
                    && typeof(IClientResource).IsAssignableFrom(serverPropType))
                    return new ExtendedComplexOverlayProperty(extendedProp, serverProp, propExtInfo);
                Type extPropElementType;

                Type serverPropElementType;
                if (extPropType.TryGetEnumerableElementType(out extPropElementType)
                    && this.mapper.TryGetExtendedResourceInfo(extPropElementType, out propExtInfo)
                    && serverPropType.TryGetEnumerableElementType(out serverPropElementType)
                    && serverPropElementType == propExtInfo.ServerType)
                    return new ExtendedCollectionOverlayProperty(extendedProp, serverProp, propExtInfo);
            }
            else if (DictProperty != null)
            {
                if (!extPropType.IsValueType || extPropType.IsNullable())
                    return ExtendedAttributeProperty.Create(extendedProp, this);
                else
                {
                    var message =
                        $"Unable to map property {extendedProp.Name} of type {ExtendedType.FullName} to underlying dictionary property {DictProperty.Name} of {ServerType.FullName}. Only nullable value types can be mapped to a dictionary.";
                    return new InvalidExtendedProperty(extendedProp, message);
                }
            }
            return new InvalidExtendedProperty(extendedProp,
                                               $"Unable to map property {extendedProp.Name} of type {ExtendedType.FullName} to any underlying dictionary property having a [ResourceAttributesProperty] on {ServerType.FullName}.");
        }
    }