annotate Source/Aspects/MixinAttribute.cs @ 4:f757da6161a1

!bug 100 + 2h fixed gregression
author cin
date Sun, 24 Aug 2014 17:57:42 +0400
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
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using BLToolkit.TypeBuilder.Builders;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 namespace BLToolkit.Aspects
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 /// http://www.bltoolkit.net/Doc/Aspects/index.htm
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 [AttributeUsage(AttributeTargets.Class, AllowMultiple=true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 public sealed class MixinAttribute : AbstractTypeBuilderAttribute
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 public MixinAttribute(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 Type targetInterface, string memberName, bool throwExceptionIfNull, string exceptionMessage)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 _targetInterface = targetInterface;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 _memberName = memberName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 _throwExceptionIfNull = throwExceptionIfNull;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 _exceptionMessage = exceptionMessage;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 public MixinAttribute(Type targetInterface, string memberName, bool throwExceptionIfNull)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 : this(targetInterface, memberName, throwExceptionIfNull, null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 public MixinAttribute(Type targetInterface, string memberName, string exceptionMessage)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 : this(targetInterface, memberName, true, exceptionMessage)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 public MixinAttribute(Type targetInterface, string memberName)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 : this(targetInterface, memberName, true, null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 private readonly Type _targetInterface;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 public Type TargetInterface
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 get { return _targetInterface; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 private readonly string _memberName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 public string MemberName
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 get { return _memberName; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 private bool _throwExceptionIfNull;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 public bool ThrowExceptionIfNull
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 get { return _throwExceptionIfNull; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 set { _throwExceptionIfNull = value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 private string _exceptionMessage;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 public string ExceptionMessage
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 get { return _exceptionMessage; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 set { _exceptionMessage = value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 public override IAbstractTypeBuilder TypeBuilder
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 return new Builders.MixinAspectBuilder(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 _targetInterface, _memberName, _throwExceptionIfNull, _exceptionMessage);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 }