"if xyz = 5 then .."와 같은 내용을 담고있는 다른 "구성 객체"에 대한 클래스를 작성하여 해당 규칙에 일부 규칙 및 동작을 전송해야합니다.클래스 디자인 : 구성 객체
아무도 나 같은 클래스의 영리한 디자인으로 나를 도울 수 있습니까?
나는 3.5
"if xyz = 5 then .."와 같은 내용을 담고있는 다른 "구성 객체"에 대한 클래스를 작성하여 해당 규칙에 일부 규칙 및 동작을 전송해야합니다.클래스 디자인 : 구성 객체
아무도 나 같은 클래스의 영리한 디자인으로 나를 도울 수 있습니까?
나는 3.5
당신이 언급하는 규칙이 액션에 매핑해야하는 경우, 다음과 같은 클래스를 가질 수 있습니다 다음 그래서
interface IRule<T>
{
void Apply(T obj);
}
class PredicateRule<T> : IRule<T>
{
public ActionRule(Func<T, bool> p, Action<T> a)
{
this.predicate = p;
this.action = a;
}
readonly Func<T, bool> predicate;
readonly Action<T> action;
public void Apply(T obj)
{
if (this.predicate(obj))
this.action(obj);
}
}
당신의 "XYZ 5 다음 .. = 경우"규칙은 다음과 같이 선언 될 수있다 :
var r = new PredicateRule<XyzClass>(x => x == 5, x => { //then... });
확실하지 C# .NET을 사용하고 당신이 뒤에있어하지만,하지만 수행하는 객체와 유사한 ApplyRules() 메소드를 만들 때 당신은() 작업을 수행하는 방법을 재정의 setdefaults를을 가질 수 개체를 저장하기 전에 작업?
+1 - 답변이 팝업 될 때까지 내가이 곳으로 가려고했던 곳과 가깝습니다. Dictionary, Action >에 이러한 규칙을 저장하여 규칙 집합을 검사하고 규칙이 평가 한 모든 동작을 적용 할 수 있습니다. –
tvanfosson
Hehe ... IRule! 너 잠꼬대! –
딕셔너리의 규칙에서 규칙으로의 할당이 좋은 생각이라고 생각합니다. Rule과 Action Class를 선언하고 Dict에 할당 할 것입니까? – Kai