Mercurial > pub > bltoolkit
diff Source/Reflection/Emit/ConstructorBuilderHelper.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Source/Reflection/Emit/ConstructorBuilderHelper.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,62 @@ +using System; +using System.Reflection.Emit; + +namespace BLToolkit.Reflection.Emit +{ + /// <summary> + /// A wrapper around the <see cref="ConstructorBuilder"/> class. + /// </summary> + public class ConstructorBuilderHelper : MethodBuilderBase + { + /// <summary> + /// Initializes a new instance of the <see cref="ConstructorBuilder"/> class + /// with the specified parameters. + /// </summary> + /// <param name="typeBuilder">Associated <see cref="TypeBuilderHelper"/>.</param> + /// <param name="constructorBuilder">A <see cref="ConstructorBuilder"/></param> + public ConstructorBuilderHelper(TypeBuilderHelper typeBuilder, ConstructorBuilder constructorBuilder) + : base(typeBuilder) + { + if (constructorBuilder == null) throw new ArgumentNullException("constructorBuilder"); + + _constructorBuilder = constructorBuilder; + _constructorBuilder.SetCustomAttribute(Type.Assembly.BLToolkitAttribute); + } + + private readonly ConstructorBuilder _constructorBuilder; + /// <summary> + /// Gets ConstructorBuilder. + /// </summary> + public ConstructorBuilder ConstructorBuilder + { + get { return _constructorBuilder; } + } + + /// <summary> + /// Converts the supplied <see cref="ConstructorBuilderHelper"/> to a <see cref="MethodBuilder"/>. + /// </summary> + /// <param name="constructorBuilder">The <see cref="ConstructorBuilder"/>.</param> + /// <returns>A <see cref="ConstructorBuilder"/>.</returns> + public static implicit operator ConstructorBuilder(ConstructorBuilderHelper constructorBuilder) + { + if (constructorBuilder == null) throw new ArgumentNullException("constructorBuilder"); + + return constructorBuilder.ConstructorBuilder; + } + + private EmitHelper _emitter; + /// <summary> + /// Gets <see cref="EmitHelper"/>. + /// </summary> + public override EmitHelper Emitter + { + get + { + if (_emitter == null) + _emitter = new EmitHelper(this, _constructorBuilder.GetILGenerator()); + + return _emitter; + } + } + } +}