2013-09-25 58 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); 
相關問題