annotate Source/Reflection/Emit/ConstructorBuilderHelper.cs @ 9:1e85f66cf767 default tip

update bltoolkit
author nickolay
date Thu, 05 Apr 2018 20:53:26 +0300
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Reflection.Emit;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 namespace BLToolkit.Reflection.Emit
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 /// A wrapper around the <see cref="ConstructorBuilder"/> class.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 public class ConstructorBuilderHelper : MethodBuilderBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 /// Initializes a new instance of the <see cref="ConstructorBuilder"/> class
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 /// with the specified parameters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 /// <param name="typeBuilder">Associated <see cref="TypeBuilderHelper"/>.</param>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 /// <param name="constructorBuilder">A <see cref="ConstructorBuilder"/></param>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 public ConstructorBuilderHelper(TypeBuilderHelper typeBuilder, ConstructorBuilder constructorBuilder)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 : base(typeBuilder)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 if (constructorBuilder == null) throw new ArgumentNullException("constructorBuilder");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 _constructorBuilder = constructorBuilder;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 _constructorBuilder.SetCustomAttribute(Type.Assembly.BLToolkitAttribute);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 private readonly ConstructorBuilder _constructorBuilder;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 /// Gets ConstructorBuilder.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 public ConstructorBuilder ConstructorBuilder
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 get { return _constructorBuilder; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 /// Converts the supplied <see cref="ConstructorBuilderHelper"/> to a <see cref="MethodBuilder"/>.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 /// <param name="constructorBuilder">The <see cref="ConstructorBuilder"/>.</param>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 /// <returns>A <see cref="ConstructorBuilder"/>.</returns>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 public static implicit operator ConstructorBuilder(ConstructorBuilderHelper constructorBuilder)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 if (constructorBuilder == null) throw new ArgumentNullException("constructorBuilder");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 return constructorBuilder.ConstructorBuilder;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 private EmitHelper _emitter;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 /// Gets <see cref="EmitHelper"/>.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 public override EmitHelper Emitter
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 if (_emitter == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 _emitter = new EmitHelper(this, _constructorBuilder.GetILGenerator());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 return _emitter;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 }