コード例 #1
0
        /// <summary>
        /// Get the internal representation of member types
        /// </summary>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public static MemberTypes GetMemberTypes(this AccessorTypes accessorTypes)
        {
            MemberTypes memberTypes;

            switch (accessorTypes)
            {
            case AccessorTypes.None:
                memberTypes = 0;
                break;

            case AccessorTypes.Property:
                memberTypes = MemberTypes.Property;
                break;

            case AccessorTypes.Field:
                memberTypes = MemberTypes.Field;
                break;

            case AccessorTypes.Any:
                memberTypes = MemberTypes.Property | MemberTypes.Field;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(accessorTypes), accessorTypes, null);
            }
            return(memberTypes);
        }
コード例 #2
0
ファイル: Snapshotter.cs プロジェクト: dotlogix/DotlogixCore
        /// <summary>
        /// Create a snapshot
        /// </summary>
        public static ISnapshot CreateSnapshot(object target, AccessorTypes includedAccessors = AccessorTypes.Property)
        {
            var dynamicType = target.GetType().CreateDynamicType();

            IEnumerable <DynamicAccessor> accessors;

            switch (includedAccessors)
            {
            case AccessorTypes.None:
                accessors = Enumerable.Empty <DynamicAccessor>();
                break;

            case AccessorTypes.Property:
                accessors = dynamicType.Properties;
                break;

            case AccessorTypes.Field:
                accessors = dynamicType.Fields;
                break;

            case AccessorTypes.Any:
                accessors = dynamicType.Accessors;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(includedAccessors), includedAccessors, null);
            }
            return(CreateSnapshot(target, accessors.AsArray()));
        }
コード例 #3
0
        public AbstractPropertyWithCodeAnalysis(
            ClassMemberVisibilityModifier visibility,
            ITypeReferenceWithCodeAnalysis type,
            string name,
            AccessorTypes accessors)
            : this()
        {
            List <AccessorDeclarationSyntax> accessorSyntax = new List <AccessorDeclarationSyntax>();

            if (accessors.HasFlag(AccessorTypes.Get))
            {
                accessorSyntax.Add(SyntaxFactory.AccessorDeclaration(SyntaxKind.GetKeyword));
            }

            if (accessors.HasFlag(AccessorTypes.Set))
            {
                accessorSyntax.Add(SyntaxFactory.AccessorDeclaration(SyntaxKind.SetKeyword));
            }

            Syntax = SyntaxFactory.PropertyDeclaration(
                default(SyntaxList <AttributeListSyntax>),
                default(SyntaxTokenList).WithClassMemberVisibilityModifier(visibility).Add(SyntaxKind.AbstractKeyword),
                type.Syntax,
                null,
                SyntaxFactory.Identifier(name),
                SyntaxFactory.AccessorList(SyntaxFactory.List(accessorSyntax)));
        }
コード例 #4
0
 private InterfaceAccessor(InterfaceAccessor propToCopyFrom)
     : base(null)
 {
     propToCopyFrom.CloneInto(this);
     AccessorType = propToCopyFrom.AccessorType;
     Modifiers    = new List <string>(propToCopyFrom.Modifiers);
 }
コード例 #5
0
        public AbstractIndexerWithCodeAnalysis(
            ClassMemberVisibilityModifier visibility,
            ITypeReferenceWithCodeAnalysis type,
            IEnumerable <IndexerParameterWithCodeAnalysis> parameters,
            AccessorTypes accessors)
            : this()
        {
            var parameterSyntax = parameters.Select(parameter => parameter.Syntax);
            List <AccessorDeclarationSyntax> accessorSyntax = new List <AccessorDeclarationSyntax>();

            if (accessors.HasFlag(AccessorTypes.Get))
            {
                accessorSyntax.Add(SyntaxFactory.AccessorDeclaration(SyntaxKind.GetKeyword));
            }

            if (accessors.HasFlag(AccessorTypes.Set))
            {
                accessorSyntax.Add(SyntaxFactory.AccessorDeclaration(SyntaxKind.SetKeyword));
            }

            Syntax = SyntaxFactory.IndexerDeclaration(
                default(SyntaxList <AttributeListSyntax>),
                default(SyntaxTokenList).WithClassMemberVisibilityModifier(visibility).Add(SyntaxKind.AbstractKeyword),
                type.Syntax,
                null,
                SyntaxFactory.BracketedParameterList(SyntaxFactory.SeparatedList(parameterSyntax)),
                SyntaxFactory.AccessorList(SyntaxFactory.List(accessorSyntax)));
        }
コード例 #6
0
 public InterfaceAccessor(Controller controller, BaseConstruct parentObject, AccessorTypes accessorType, CodeLanguage language)
     : base(controller)
 {
     ParentObject = parentObject;
     AccessorType = accessorType;
     Language     = language;
 }
コード例 #7
0
 private PropertyAccessor(PropertyAccessor propToCopyFrom)
     : base(null)
 {
     propToCopyFrom.CloneInto(this);
     AccessorType = propToCopyFrom.AccessorType;
     Language = propToCopyFrom.Language;
     Modifier = propToCopyFrom.Modifier;
 }
コード例 #8
0
 public PropertyAccessor(Controller controller, BaseConstruct parentObject, AccessorTypes accessorType, string text, CodeLanguage language)
     : base(controller)
 {
     ParentObject = parentObject;
     AccessorType = accessorType;
     Text = text;
     Language = language;
 }
 public AbstractPartialClassAbstractIndexerWithCodeAnalysis(
     ClassMemberVisibilityModifier visibility,
     ITypeReferenceWithCodeAnalysis type,
     IEnumerable <IndexerParameterWithCodeAnalysis> parameters,
     AccessorTypes accessors)
     : this(new AbstractIndexerWithCodeAnalysis(visibility, type, parameters, accessors))
 {
 }
コード例 #10
0
 private PropertyAccessor(PropertyAccessor propToCopyFrom)
     : base(null)
 {
     propToCopyFrom.CloneInto(this);
     AccessorType = propToCopyFrom.AccessorType;
     Language     = propToCopyFrom.Language;
     Modifier     = propToCopyFrom.Modifier;
 }
コード例 #11
0
 public PropertyAccessor(Controller controller, BaseConstruct parentObject, AccessorTypes accessorType, string text, CodeLanguage language)
     : base(controller)
 {
     ParentObject = parentObject;
     AccessorType = accessorType;
     Text         = text;
     Language     = language;
 }
 public AbstractPartialClassAbstractPropertyWithCodeAnalysis(
     ClassMemberVisibilityModifier visibility,
     ITypeReferenceWithCodeAnalysis type,
     string name,
     AccessorTypes accessors)
     : this(new AbstractPropertyWithCodeAnalysis(visibility, type, name, accessors))
 {
 }
コード例 #13
0
        /// <summary>
        /// Creates a new instance of <see cref="DynamicAccessor"/>
        /// </summary>
        protected DynamicAccessor(MemberInfo memberInfo, DynamicSetter setter, DynamicGetter getter, Type valueType, AccessorTypes accessorType) : base(memberInfo)
        {
            ValueType    = valueType ?? throw new ArgumentNullException(nameof(valueType));
            AccessorType = accessorType;
            var accessMode = ValueAccessModes.None;

            if (getter != null)
            {
                Getter      = getter;
                accessMode |= ValueAccessModes.Read;
            }
            if (setter != null)
            {
                Setter      = setter;
                accessMode |= ValueAccessModes.Write;
            }
            ValueAccessMode = accessMode;
        }
コード例 #14
0
 public PropertyAccessor(Controller controller, AccessorTypes accessorType, string name)
     : base(controller)
 {
     AccessorType = accessorType;
     Name = name;
 }
コード例 #15
0
 public PropertyAccessor(Controller controller, AccessorTypes accessorType)
     : base(controller)
 {
     AccessorType = accessorType;
 }
コード例 #16
0
 public VBPropertyAccessor(VBController controller, VBBaseConstruct parentObject, AccessorTypes accessorType, string text, CodeLanguage language)
     : base(controller, parentObject, accessorType, text, language)
 {
 }
コード例 #17
0
 public PropertyAccessor(Controller controller, AccessorTypes accessorType, string name)
     : base(controller)
 {
     AccessorType = accessorType;
     Name         = name;
 }
コード例 #18
0
 public VBPropertyAccessor(VBController controller, VBBaseConstruct parentObject, AccessorTypes accessorType, string text, CodeLanguage language)
     : base(controller, parentObject, accessorType, text, language)
 {
 }
コード例 #19
0
 public VBPropertyAccessor(VBController controller, AccessorTypes accessorType)
     : base(controller, accessorType)
 {
 }
コード例 #20
0
 public VBInterfaceAccessor(VBController controller, VBBaseConstruct parentObject, AccessorTypes accessorType, CodeLanguage language)
     : base(controller, parentObject, accessorType, language)
 {
 }
コード例 #21
0
 public InterfaceAccessor(Controller controller, AccessorTypes accessorType, string modifier)
     : base(controller)
 {
     AccessorType = accessorType;
     _Modifiers.Add(modifier);
 }
コード例 #22
0
 public VBPropertyAccessor(VBController controller, AccessorTypes accessorType)
     : base(controller, accessorType)
 {
 }
コード例 #23
0
 public VBInterfaceAccessor(VBController controller, AccessorTypes accessorType, string modifier) : base(controller, accessorType, modifier)
 {
 }
コード例 #24
0
 public PropertyAccessor(Controller controller, AccessorTypes accessorType)
     : base(controller)
 {
     AccessorType = accessorType;
 }
コード例 #25
0
 public VBInterfaceAccessor(VBController controller, VBBaseConstruct parentObject, AccessorTypes accessorType, CodeLanguage language) : base(controller, parentObject, accessorType, language)
 {
 }
コード例 #26
0
 public VBInterfaceAccessor(VBController controller, AccessorTypes accessorType, string modifier)
     : base(controller, accessorType, modifier)
 {
 }