Esempio n. 1
0
        public void GetSetPropertyModifierTest()
        {
            AssemblyProperty property = (AssemblyProperty)testClass.typeMembers.Find(item => item.FullName.Contains("Name"));

            Assert.AreEqual("public ", property.getAccessModifier);
            Assert.AreEqual("private ", property.setAccessModifier);
        }
                public Data this[AssemblyProperty id]
                {
                    get
                    {
                        if ((int)id >= (int)Fusion.ASM_NAME.ASM_NAME_MAX_PARAMS)
                        {
                            throw new IndexOutOfRangeException();
                        }

                        return(new Data(_name.getPropertyData((ASM_NAME)id)));
                    }
                }
Esempio n. 3
0
        public static string ConvertToString(AssemblyProperty property)
        {
            var result = property.Modifier.ToString().ToLower() + " ";

            if (property.IsVirtual && !property.IsAbstract)
            {
                result += "virtual ";
            }
            else if (property.IsVirtual && property.IsAbstract)
            {
                result += "abstract ";
            }

            if (property.IsStatic)
            {
                result += "static ";
            }

            result += property.ValueType.Name + " ";
            result += property.Name;

            result += "{ ";

            if (property.CanRead)
            {
                result += property.GetterModifier.ToString().ToLower() + " get;";
            }

            if (property.CanWrite)
            {
                result += property.SetterModifier.ToString().ToLower() + " set;";
            }

            result += " }";

            return(result);
        }
        public AssemblyType(Type type)
        {
            Name         = type.Name;
            Fields       = new List <AssemblyField>();
            Properties   = new List <AssemblyProperty>();
            Methods      = new List <AssemblyMethod>();
            Constructors = new List <AssemblyConstructor>();
            var autoMethods = new List <MethodInfo>();

            IsNested = type.IsNested;
            IsSealed = type.IsSealed;

            TypeAttributes visibilityMask = type.Attributes & TypeAttributes.VisibilityMask;

            switch (visibilityMask)
            {
            case TypeAttributes.Public:
                Modifier = AccessModifier.Public;
                break;

            case TypeAttributes.NotPublic:
                Modifier = AccessModifier.Private;
                break;

            case TypeAttributes.NestedAssembly:
                Modifier = AccessModifier.Internal;
                break;

            case TypeAttributes.NestedFamily:
                Modifier = AccessModifier.Protected;
                break;
            }

            TypeAttributes classSemantics = type.Attributes & TypeAttributes.ClassSemanticsMask;

            switch (classSemantics)
            {
            case TypeAttributes.Class:
                IsAbstract = (type.Attributes & TypeAttributes.Abstract) != 0;
                IsClass    = type.IsClass;
                if (!IsClass)
                {
                    IsStructure = true;
                    IsEnum      = type.IsEnum;
                }

                break;

            case TypeAttributes.Interface:
                IsInterface = true;
                Modifier    = AccessModifier.Public;
                break;
            }

            PropertyInfo[] properties = type.GetProperties(BindingFlags);
            foreach (var property in properties)
            {
                var assemblyProperty = new AssemblyProperty(property);
                autoMethods.AddRange(assemblyProperty.AutoMethods);
                Properties.Add(assemblyProperty);
            }

            FieldInfo[] fields = type.GetFields(BindingFlags);
            foreach (var field in fields)
            {
                if (field.Name.Contains("<"))
                {
                    continue;
                }
                var assemblyField = new AssemblyField(field);
                Fields.Add(assemblyField);
            }

            MethodInfo[] methods = type.GetMethods(BindingFlags);
            foreach (var methodInfo in methods)
            {
                if (!autoMethods.Contains(methodInfo))
                {
                    var method = new AssemblyMethod(methodInfo);
                    Methods.Add(method);
                }
            }

            ConstructorInfo[] constructors = type.GetConstructors(BindingFlags);
            foreach (var constructorInfo in constructors)
            {
                var constructor = new AssemblyConstructor(constructorInfo);
                Constructors.Add(constructor);
            }
        }