나는 이런 식으로 구현되는 추상 클래스가 있습니다. 일반 인수 <T>
은 IEntity
인터페이스를 구현하는 클래스 여야합니다.기본 클래스 일반 인수 해명
"new()"?
란? 주어진 클래스의 새 인스턴스 여야합니까? 그 목적은 무엇입니까? 참고로 모두 <T>
및 <U>
고맙습니다. 에서
나는 이런 식으로 구현되는 추상 클래스가 있습니다. 일반 인수 <T>
은 IEntity
인터페이스를 구현하는 클래스 여야합니다.기본 클래스 일반 인수 해명
"new()"?
란? 주어진 클래스의 새 인스턴스 여야합니까? 그 목적은 무엇입니까? 참고로 모두 <T>
및 <U>
고맙습니다. 에서
new()
는 형식 인수가 공공 파라가 있어야 지정하는 제약 조건은 다음과 같습니다 뭔가처럼 무 미터 생성자. 제네릭 형식 제약 조건에 대한 자세한 내용은 MSDN을 참조하십시오.
docs :
".. 새로운 제약이 제네릭 클래스 선언에서 모든 유형의 인수가 공공 매개 변수가없는 생성자가 있어야합니다, 유형 추상적 할 수없는 새로운 제약 조건을 사용하도록 지정"
나는 위의 설명이 충분하다고 생각하기 때문에 이것에 더 많이 추가 할 필요가 없습니다.
new()
은 new constraint이라고하며 형식 인수에는 공용 매개 변수없는 생성자가 필요합니다.
당신이 명시 적으로 전달 된 유형을 알지 못하고, 클래스 내부 제네릭 형식의 인스턴스를 만들 수 있다는 것입니다 사용의 이점 예를 들어
:.
이public PersonEntity : IEntity
{
// public parameterless constructor
public PersonEntity()
{
}
}
public abstract class BaseImplementation<T, U> : IHistory<T>
where T : class, IEntity, new()
where U : DbContext, new()
{
public T CreateEntity()
{
var entity = new T();
// entity will be the type passed to `T` when instantiating `BaseImplementation`
}
}
그리고 사용이 될 것이다
public class PersonImpl : BaseImplementation<PersonEntity, DataContext>
{
public void Method1()
{
var entity = CreateEntity();
// entity is typeof(PersonEntity);
}
}
답변 해 주셔서 감사합니다. 매우 도움이됩니다. –