2011-08-15 2 views
0

파슬리의 프레임 워크 확장 프로그램에서 작업 중이므로 컨텍스트의 초기화 중에 ObjectDefinition을 효과적으로 복제하고 일부 속성을 변경해야합니다.파슬리 : ObjectDefinition에서 ObjectDefinitionBuilder 만들기

ObjectDefinition은 본질적으로 변경할 수 없기 때문에 기존의 ObjectDefinition의 속성이 안전하게 복사되도록 새로운 빌더를 만들기 위해 농구를 뛰어 넘어야한다는 것을 알고 있습니다.

기존 ObjectDefinition에서 새로운 ObjectDefinitionBuilder을 안전하게 만들 수있는 방법이 있습니까?

그렇지 않은 경우 ObjectDefinition 복제본을 만들려면 어떤 대안이 있습니까?

+0

실제로 확장 프로그램으로 수행하려는 작업을 게시 할 수 있습니까? 옳은 방향으로 나아 가지 않을 수도 있습니다. –

답변

0

좀 더 세련된 해결책이 있는지 나는 잘 모르겠지만,이 장황한 일을 끝내었다.

내 구체적인 경우 등록 된 개체의 클래스를 변경하고 다른 속성은 유지하려고합니다. 사용 방법이 다음과 같습니다.

private function cloneDefinition(objectDefinition:ObjectDefinition,replacementClass:Class):ObjectDefinition 
{ 
     switch (true) 
     { 
      case objectDefinition is DefaultSingletonObjectDefinition: 
       return new DefaultSingletonObjectDefinition(ClassInfo.forClass(replacementClass),objectDefinition.id,objectDefinition.registry); 
      case objectDefinition is DefaultDynamicObjectDefinition: 
       return new DefaultDynamicObjectDefinition(ClassInfo.forClass(replacementClass),objectDefinition.id,objectDefinition.registry); 
     } 
     throw new Error("Support for cloning object definitions of type " + getQualifiedClassName(objectDefinition) + " not yet supported"); 
}