제네릭과 그 사용법을 설명하는 몇 가지 유용한 링크를 사용할 수 있습니다. 그러나 나는 또한 현재의 프로젝트에서 일하는 것에 관한 매우 구체적인 질문을 가지고있다.제네릭을 이해하는 데 도움이 필요합니다. 추상 형식을 사용하는 방법 질문
을 감안할 때이 클래스의 생성자 :
public class SecuredDomainViewModel<TDomainContext, TEntity> : DomainViewModel<TDomainContext, TEntity>
where TDomainContext : DomainContext, new()
where TEntity : Entity, new()
public SecuredDomainViewModel(TDomainContext domainContext, ProtectedItem protectedItem)
: base(domainContext)
{
this.protectedItem = protectedItem;
}
그리고 그것의 생성이 방법 :
DomainViewModel d;
d = new SecuredDomainViewModel<MyContext, MyEntityType>(this.context, selectedProtectedItem);
내가 MyContext 내에서 20 개의 EntityTypes을 가정하면, 큰없이 생성자를 호출 할 수있는 쉬운 방법이있다 switch 문? d는 DomainViewModel 내가 나중에 SecuredDomainViewModel에서 메서드에 액세스 할 필요가 있기 때문에
또한, 내가이 일을해야 할 것 같다
if (((SecuredDomainViewModel<MyContext, MyEntityType>)d).CanEditEntity)
그러나 다시 "MyEntityType"실제로 20 개 diffent 유형 중 하나가 될 수 있습니다. MyEntityType이 일종의 Reflection에서 반환 된 이러한 유형의 명령문을 작성하는 방법이 있습니까?
명확화를위한 추가 정보 : ConstructorInfo를 조사 하겠지만 내가하고 싶은 것을 잘못 설명했을 수 있습니다.
원본 게시글에 DomainViewModel, d이 있다고 가정합니다.
이 세 가지 방법을 통해 구성되었을 수 있습니다 :
ex: if (((SecuredDomainViewModel<MyContext, Order)d).CanEditEntity)
ex: if (((SecuredDomainViewModel<MyContext, Invoice)d).CanEditEntity)
ex: if (((SecuredDomainViewModel<MyContext, Consumer)d).CanEditEntity)
내가 가진 가정 :
d = new SecuredDomainViewModel<MyContext, Order>(this.context, selectedProtectedItem);
d = new SecuredDomainViewModel<MyContext, Invoice>(this.context, selectedProtectedItem);
d = new SecuredDomainViewModel<MyContext, Consumer>(this.context, selectedProtectedItem);
나중에, 나는 현재이 방법으로 호출해야합니다 SecuredDomainViewModel에 메서드에 액세스 할 필요가 이 컨텍스트에서 N + 엔티티 유형을 사용하려면 다음과 같이 문의하십시오.
여기서 CurrentEntityType은 현재 항목 엔터티 유형을 기반으로 주문, 송장 또는 소비자를 반환하는 일종의 함수 또는 다른 유형의 호출이었습니다.
그럴 수 있습니까?
당신이 뭘하려고하는지 설명해 주시겠습니까? 나는이 질문의 요점을 groking하지 않는다. – jfar
기본적으로, 나는 이런 식으로 DOM을 할 수 있기를 원하지만,이 특정 방법은 불가능하다는 것을 알고 있습니다. 유형 entityType; entityType = "Orders" if (((SecuredDomainViewModel) d) .CanEditEntity) –
kmacmahon