0

インターフェイスを作成しようとしています ' 1 つの int パラメーターを持つコンストラクターを持つようSomething<T>に制限したいと考えていました。Tのようなことができますwhere : new()。では、なぜ私はそれを作ることができないのwhere T : new(int)ですか?

4

1 に答える 1

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);
于 2013-09-25T20:35:58.160 に答える