new()

2013-09-25 4 views
0

나는 'Something<T>'인터페이스를 만들려고하고 T에 하나의 int 매개 변수로 생성자를 지정하려고합니다. 나는 where : new()과 같은 것을 할 수있다. 그렇다면 왜 내가 그것을 where T : new(int)으로 만들 수 없습니까?new()

+6

(http://blog.ryjones.org/2005/07/12/product-development/) –

+1

때문에 그 기능은 구현되지 않았습니다 –

+0

그것은 매우 일반적인 아니기 때문에? 어느 시점에서 멈출 수 있습니까? 이 기능은 거의 의미가 없습니다. – EkoostikMartin

답변

1

T의 인스턴스화를 사용자에게 연기하여이 단계를 수행 할 수 있습니다. 뭔가 같은 :

class MyTCreator<TParam, T> 
{ 
    private Func<TParam, T> generator; 
    public MyTCreator(Func<TParam, T> generator) 
    { 
     this.generator=generator; 
    } 
    public T CreateT(TParam param) 
    { 
     return generator(param); 
    } 
} 

및 사용이 같은 클래스 :

[여기]
var creator = new MyTCreator<long, DateTime>(ticks => new DateTime(ticks)); 
DateTime dt = creator.CreateT(12345L); 
관련 문제