2017-01-03 6 views
1

프로그래밍 방식으로 EAttribute에 EGeneric Type Argument를 추가 할 수 있습니까? 나는이 같은 EAttribute를 만들 수 있습니다 프로그래밍 방식으로 EGeneric Type Argument를 EAttribute에 추가하려면 어떻게합니까?

EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute(); 
eAttribute.setName("myAttribute"); 
EDataType dataType = EcorePackage.eINSTANCE.getEEList(); 
// add here String to List as generic argument? 
eAttribute.setEType(dataType); 

그러나 코드

EEList의 제네릭 형식 인수를 지정하지 니펫을. Eclipse에서는 New Child > EGeneric Type Argument으로 수정 한 다음 EGeneric Type Argument의 EClassifierEString으로 설정합니다. 하지만 프로그래밍 방식으로 어떻게 할 수 있습니까? 끝에

, 속성은 다음과 같아야합니다 EAttribute Tree View

답변

2

를 그것은 나에게 시간이 좀 걸렸지 만 나는 해결책이 있습니다

EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute(); 
eAttribute.setName("myAttribute"); 
eAttribute.setEType(EcorePackage.eINSTANCE.getEEList()); 
// This is the interesting part: 
EGenericType eGenericTypeArgument = ecoreFactory.createEGenericType(); // line 1 
eGenericTypeArgument.setEClassifier(EcorePackage.eINSTANCE.getEString()); // line 2 
eAttribute.getEGenericType().getETypeArguments().add(eTypeArgument); // line 3 
  1. 1 새로운 EGenericType가되어 줄 에서을 EcoreFactory에서 생성되었습니다. 그것이 우리의 EGeneric Type Argument입니다.
  2. 이제 2 행에서 EGeneric Type Argument의 데이터 유형을 EString으로 설정합니다. 마지막 단계에서
  3. 라인 3에, 우리는 EAttribute (NOT 우리가 이전에 설정 한 EType)의 EGenericType에 EGeneric 형식 인수를 추가합니다.

우리는 EDataType을 수정하지 않는다는 것을 이해하며, EAttribute을 수정합니다.