2013-04-26 2 views
1

본질적으로 동일한 기능을 수행하는 플러그인을 작성 중입니다. 예를 들어, 상태가 변경 될 때 작업을 생성하십시오. 기능은 2 개의 개체에서 발생해야합니다.CRM 2011 여러 엔터티 용 하나의 플러그인

모든 단계는 엔터티 유형 필드 (옵션 세트) 설정을 제외하고 완전히 동일합니다. 이는 플러그인을 트리거 한 엔티티에 따라 EntityA 또는 EntityB으로 설정됩니다.

내 기존 코드 내가 대신 new_entitya 또는 new_entityb를 작성 PrimaryEntityName의 값에 따라 .ToEntity 호출의 값을 설정할 수있는 방법이, 이제 다음

new_entitya entityA = (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity && context.PrimaryEntityName == "new_entitya") 
            ? ((Entity)context.InputParameters["Target"]).ToEntity<new_entitya>() 
            : null; 

합니까?

답변

2

왜 전혀 변환되지 않습니까? 엔티티 이름을 확인하고 필요한 속성을 적용 할 수 있습니다.

var newTask = new Entity("Task"); 
newTask.Attributes.Add("subject", "foo"); 
// etc etc for other common properties 
if (context.PrimaryEntityName.Equals("new_entitya")) 
{ 
    newTask.Attributes.Add("new_optionset", valueA); 
} 
else 
{ 
    newTask.Attributes.Add("new_optionset", valueB); 
} 

나는 단점은 당신이 플러그인의 optionset 값을 유지해야한다는 것입니다하지만이 두 값의 경우 큰 오버 헤드를하지 않는 것 같아요.

+0

+1 후기 바인딩이 훨씬 뛰어납니다. 이 시나리오. 초기 바인딩 래퍼가 항상 최선의 방법은 아닙니다. 리플렉션 사용에 대한 생각을 시작해야하는 경우 잘못 처리하고있는 것입니다. –

0

post을 참조하십시오. 기본적으로 전달 된 유형을 기반으로 즉석에서 제네릭 메서드를 작성해야합니다.

+1

중복으로 닫아야합니까? –

+0

@PaulBellora 예, 아니요. 질문은 CRM 개발자가 질문하는 방식으로 표현되므로 질문을 찾는 것이 도움이 될 것입니다.하지만 이론적으로 질문은 실제로 제가 연결 한 질문입니다 ... – Daryl

관련 문제