나는 다음을 수행하려고 :매개 변수없는 생성자를 사용하도록 파생 클래스를 적용 할 수없는 이유는 무엇입니까?
class Program
{
static void Main(string[] args)
{
foo<baz> fooObject = new foo<baz>();
AnotherClass<baz> _baz = new AnotherClass<baz>();
_baz.testMethod(fooObject);
}
}
public class AnotherClass<T> where T : bar
{
public void testMethod(foo<T> dummy)
{
foobar = dummy;
}
private foo<T> foobar = null;
}
public class foo<T> where T : bar, new()
{
public foo()
{
_t = new T();
}
private T _t;
}
public abstract class bar
{
public abstract void someMethod();
// Some implementation
}
public class baz : bar
{
public override void someMethod()
{
//Implementation
}
}
그리고 'T는'에 매개 변수로 'T'를 사용하기 위해 공공 매개 변수가없는 생성자가 아닌 추상 형식이어야한다는 설명하는 오류 제네릭 형식 또는 메서드 나는 이것이 왜 틀림 없는가를 완전히 이해하고 또한 'new'하는 것을 피하기 위해 'T'타입의 사전 초기화 된 객체를 생성자 인수로 전달할 수 있다는 것을 이해하지만이 문제를 해결하기위한 방법이 있습니까? 매개 변수없는 생성자를 제공하기 위해 'bar'에서 파생되는 클래스를 적용하는 방법은 무엇입니까?
고정 - AnotherClass()에 'new()'제약 조건이 누락되었습니다.
고마워, 이걸 고쳤다 고! –