데이터베이스 모델과 일반 시스템 모델의 두 가지 유형이 있습니다.새로운 유형 제약 조건을 가진 일반 생성자
저는 모델을 데이터베이스 모델로 변환 할 수 있기를 원하고 그 반대도 마찬가지입니다.
public static E FromModel<T, E>(T other)
where T : sysModel
where E : dbModel
{
return new E(other);
}
은 기본적으로 모두 sysModel
및 dbModel
추상적 있습니다
나는 내가 쓴 다음과 같은 방법이있다.
dbModel에는 모두 복사 생성자가있는 많은 상속 클래스가 있습니다.
임 수신 :
은 그렇지 기술적 가끔 일치를 해달라고
임 알고 새로운() 제약 조건을 가지고 becauase 형식 매개 변수 'E'의 인스턴스를 만들 수 없습니다 T
의 모든 값에 대한 생성자, 적어도 디버거가 알고있는 것은 무엇인지 알고 있어야합니다.
또한 제약 조건 인 where E : dbModel, new()
을 추가하려고했지만 관련성이 없습니다.
일반적인 방법과 매개 변수를 사용하여 다른 모델로 모델을 변환 할 수있는 방법이 있습니까?
감사합니다.
생성자에 매개 변수를 사용하고 있기 때문에public static E FromModel<T, E>(T other)
where T : sysModel
where E : dbModel, new()
, 당신은 new
을 사용할 수 없습니다 제네릭 형식에 new
을 사용하려면
는 매개 변수가없는 생성자를 가지고있다. 아마도 당신은 원하는 복사본 구성의 유형을 노출시키는 인터페이스를 통해 일종의 일반적인 팩토리 메소드를 소개해야 할 것입니다. – Anthony
나는 constructor을 인자로 넘기는 것을 피하고 싶다. –
generic 타입 인자에 인자를 가진 생성자가 존재할 수 없다. 그렇게하기 위해서'Activator.CreateInstance'를 사용하고, 사용 된 타입이 일치하는 생성자를 갖도록기도해야합니다. 일반적으로 제네릭 형식을 사용하는 솔루션은 구현에 대한 의존도가 높기 때문에 이러한 종류의 작업을 삼가해야합니다. 이것은 "나는이 메소드가 모든 유형의 스토리지 클래스 * ANY TYPE *을 생성 할 수 있기를 원하지만 생성자에 문자열 매개 변수가 있어야하며 파일 이름이어야합니다."라고 말합니다. –