2009-08-15 6 views
0

테이블에서 생성 된 일부 코드로 대체하는 방법을 찾고있는 UGLY 논리 트리가 있습니다. 여러 가지 일을 기준으로이 지점 :C에서 논리 트리의 혼합 된 유형 #

  • 목록에서 List<AbstractType>
  • 실제 유형의 길이
  • 플래그 enum

내 기본적인 아이디어는 의사 결정 나무의 일종을 구축하는 것입니다 에서 입력 테이블. 리스트의 길이와 플래그가 쉬운 경우 (switch), 타입 비트는 어떨까요?

This question은 다형성이 좋은 생각이지만 내 생각에는 4 가지 바람에 염려와 코드를 섞을 것이라고 제안합니다. 어쨌든 세대에 따라 달라집니다. 다른 제안 된 솔루션 (IDictionary<Type, DelegateType>)이 작동하지만 약간 추한 것 같습니다.

누구에게도 제안 사항이 있습니까?

+0

지금 어떻게 보이는지 게시 할 수 있다면 도움이됩니다. –

+0

The Daily WTF에서 볼 수있는 것과 논리적으로 만나는 것 사이의 논리 트리를 생각해보십시오. 좀 일반적인 해결책을 찾고 있는데, 그 이상을 원하면 다른 질문에 답하고있는 것입니다. – BCS

답변

1

한 가지 방법은 유형 이름 (예 : 콜론으로 구분)을 연결 한 다음 문자열 (예 : 콜론으로 구분)을 연결하는 것입니다.

switch(colon_separated_typenames(list)) { 
    case "int:int": //foo 
    case "double:String:double": //bar 
} 
+0

니스 깨끗한 +1,하지만 문자열 건물과 (용의자) 스위치는 천천히 측면에 조금 있습니다. 앞에 좀 더 노력을 기울이면 어떤 배분도없이 떠날 수 있다고 생각합니다. – BCS