blob: 46705c6683d1eb986f2542d3d8d4eeee64b9ddca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
//
// System.Runtime.Remoting.Contexts.ContextAttribute..cs
//
// Author:
// Miguel de Icaza (miguel@ximian.com)
//
// (C) Ximian, Inc. http://www.ximian.com
//
using System.Runtime.Remoting.Activation;
using System.Collections;
namespace System.Runtime.Remoting.Contexts {
[AttributeUsage (AttributeTargets.Class)]
[Serializable]
public class ContextAttribute : Attribute, IContextAttribute, IContextProperty {
protected string AttributeName;
public virtual string Name {
get {
return AttributeName;
}
}
public override bool Equals (object o)
{
if (o == null)
return false;
if (!(o is ContextAttribute))
return false;
ContextAttribute ca = (ContextAttribute) o;
if (ca.AttributeName != AttributeName)
return false;
return true;
}
public virtual void Freeze (Context ctx)
{
}
public override int GetHashCode ()
{
if (AttributeName == null)
return 0;
return AttributeName.GetHashCode ();
}
/// <summary>
/// Adds the current context property to the IConstructionCallMessage
/// </summary>
public virtual void GetPropertiesForNewContext (IConstructionCallMessage msg)
{
if (msg == null)
throw new ArgumentNullException ("IConstructionCallMessage");
IList list = msg.ContextProperties;
list.Add (this);
}
// <summary>
// True whether the context arguments satisfies the requirements
// of the current context.
// </summary>
public virtual bool IsContextOK (Context ctx, IConstructionCallMessage msg)
{
if (msg == null)
throw new ArgumentNullException ("IConstructionCallMessage");
if (ctx == null)
throw new ArgumentNullException ("Context");
if (!msg.ActivationType.IsContextful)
return true;
IContextProperty p = ctx.GetProperty (AttributeName);
if (p == null)
return false;
if (this != p)
return false;
return true;
}
public virtual bool IsNewContextOK (Context ctx)
{
return true;
}
}
}
|