|
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision: 915 $</version>
// </file>
using System;
using System.Collections;
namespace ICSharpCode.Core
{
public interface IOwnerState {
System.Enum InternalState {
get;
}
}
/// <summary>
/// Condition evaluator that compares the state of the caller/owner with a specified value.
/// The caller/owner has to implement <see cref="IOwnerState"/>.
/// </summary>
public class OwnerStateConditionEvaluator : IConditionEvaluator
{
public bool IsValid(object caller, Condition condition)
{
if (caller is IOwnerState) {
try {
System.Enum state = ((IOwnerState)caller).InternalState;
System.Enum conditionEnum = (System.Enum)Enum.Parse(state.GetType(), condition.Properties["ownerstate"]);
int stateInt = Int32.Parse(state.ToString("D"));
int conditionInt = Int32.Parse(conditionEnum.ToString("D"));
return (stateInt & conditionInt) > 0;
} catch (Exception) {
throw new ApplicationException("can't parse '" + condition.Properties["state"] + "'. Not a valid value.");
}
}
return false;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.