[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property)]
public
class SecurityLevel
: Attribute
{
private
int level;
public
int Level
{
get { return level; }
set { level = value;
}
}
public
SecurityLevel(int level)
{
this.level = level;
}
public
override string
ToString()
{
string value = "Level
: " + level.ToString();
return value;
}
}
class
testSecurityLevel
{
[SecurityLevel(3)]
public
void A()
{
}
[SecurityLevel(1)]
public
void B()
{
}
}
static
void Main(string[]
args)
{
int
lev = 2;
testSecurityLevel
tsl = new testSecurityLevel();
if
(typeof(testSecurityLevel).GetMethods().Where(x
=> x.Name.Equals("A")).First().GetCustomAttributes(false).Where(x => (x as
SecurityLevel) != null).Select(x
=> x as SecurityLevel).First().Level
<= lev)
{
tsl.A();
}
if
(typeof(testSecurityLevel).GetMethods().Where(x
=> x.Name.Equals("B")).First().GetCustomAttributes(false).Where(x => (x as
SecurityLevel) != null).Select(x
=> x as SecurityLevel).First().Level
<= lev)
{
tsl.B();
}
No comments:
Post a Comment