Exemplo n.º 1
0
        /// <summary> Creates a PropertySignature of a property represented by System.Reflection type </summary>
        public static PropertySignature FromReflection(R.PropertyInfo prop)
        {
            prop = MethodSignature.SanitizeDeclaringTypeGenerics(prop);
            var declaringType = TypeSignature.FromType(prop.DeclaringType);
            var get           = prop.GetMethod?.Apply(MethodSignature.FromReflection);
            var set           = prop.SetMethod?.Apply(MethodSignature.FromReflection);
            var m             = get ?? set;

            var resultType = TypeReference.FromType(prop.PropertyType);

            return(PropertySignature.Create(prop.Name,
                                            declaringType,
                                            resultType,
                                            get?.Accessibility,
                                            set?.Accessibility,
                                            m.IsStatic,
                                            m.IsVirtual,
                                            m.IsOverride,
                                            m.IsAbstract));
        }
Exemplo n.º 2
0
        public static FieldSignature FromReflection(R.FieldInfo field)
        {
            field = MethodSignature.SanitizeDeclaringTypeGenerics(field);

            var declaringType = TypeSignature.FromType(field.DeclaringType);
            var accessibility = field.IsPublic ? Accessibility.APublic :
                                field.IsAssembly ? Accessibility.AInternal :
                                field.IsPrivate ? Accessibility.APrivate :
                                field.IsFamily ? Accessibility.AProtected :
                                field.IsFamilyOrAssembly ? Accessibility.AProtectedInternal :
                                field.IsFamilyAndAssembly ? Accessibility.APrivateProtected :
                                throw new NotSupportedException("Unsupported accesibility of " + field);

            var resultType = TypeReference.FromType(field.FieldType);

            return(new FieldSignature(declaringType,
                                      field.Name,
                                      accessibility,
                                      resultType,
                                      field.IsStatic,
                                      field.IsInitOnly));
        }