0

他のクラスを派生できる基本クラスを作成しています。

public class BaseClass<T> where T
{
    public BaseClass()
    {
        TClassObject = new T("SomeText"); // Error here
    }

    public T TClassObject { get; set; }
}

'T': 変数型のインスタンスを作成するときに引数を提供できません。

私がここに欠けているもの。

4

2 に答える 2

5

MSDN から:

新しい制約は、ジェネリック クラス宣言内のすべての型引数に、パラメーターなしのパブリック コンストラクターが必要であることを指定します。

したがって、パラメータなしである必要があります。あなたは見たいかもしれませんActivator.CreateInstance

http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx

于 2013-04-09T12:59:37.573 に答える
2

where T : new()制約は、パラメーターなしのコンストラクターがT必要であることを示しています。あなたのコードは、文字列パラメーターを受け取るコンストラクターを呼び出していますが、そのようなコンストラクターがあることは保証されていません。T

C# では、特定のコンストラクター シグネチャに制約を作成することはできません。この機能が必要な場合は、このスレッドの回答のようなものを使用することをお勧めします。

于 2013-04-09T13:04:22.660 に答える