Business Logic Toolkit for .NET
www.bltoolkit.net
|  Home   |  Download   |  Documentation   |  Discussions   |  License   |

  Source.TypeBuilder.GlobalInstanceTypeAttribute.cs

 
using System;
using System.Diagnostics.CodeAnalysis;

namespace BLToolkit.TypeBuilder
{
    [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = true)]
    public class GlobalInstanceTypeAttribute : InstanceTypeAttribute
    {
        public GlobalInstanceTypeAttribute(Type propertyType, Type instanceType)
            : base(instanceType)
        {
            _propertyType = propertyType;
        }

        public GlobalInstanceTypeAttribute(Type propertyType, Type instanceType, object parameter1)
            : base(instanceType, parameter1)
        {
            _propertyType = propertyType;
        }

        public GlobalInstanceTypeAttribute(Type propertyType, Type instanceType,
            object parameter1,
            object parameter2)
            : base(instanceType, parameter1, parameter2)
        {
            _propertyType = propertyType;
        }

        public GlobalInstanceTypeAttribute(Type propertyType, Type instanceType,
            object parameter1,
            object parameter2,
            object parameter3)
            : base(instanceType, parameter1, parameter2, parameter3)
        {
            _propertyType = propertyType;
        }

        public GlobalInstanceTypeAttribute(Type propertyType, Type instanceType,
            object parameter1,
            object parameter2,
            object parameter3,
            object parameter4)
            : base(instanceType, parameter1, parameter2, parameter3, parameter4)
        {
            _propertyType = propertyType;
        }

        public GlobalInstanceTypeAttribute(Type propertyType, Type instanceType,
            object parameter1,
            object parameter2,
            object parameter3,
            object parameter4,
            object parameter5)
            : base(instanceType, parameter1, parameter2, parameter3, parameter4, parameter5)
        {
            _propertyType = propertyType;
        }

        private readonly Type _propertyType;
        public           Type  PropertyType
        {
            get { return _propertyType; }
        }

        private         Builders.IAbstractTypeBuilder _typeBuilder;
        public override Builders.IAbstractTypeBuilder  TypeBuilder
        {
            get 
            {
                if (_typeBuilder == null)
                    _typeBuilder = new Builders.InstanceTypeBuilder(_propertyType, InstanceType, IsObjectHolder);

                return _typeBuilder;
            }
        }
    }
}
 
© 2010 www.bltoolkit.net
support@bltoolkit.net