-3

次の例を考えると...

public class Example
{
    public static T GetDefaultValue<T>()
    {
    // return ???
    }
}

ジェネリックを使用せずに、GetDefaultValue 関数に渡される型を、IDisposable を実装するパラメーターなしのコンストラクターを持つクラスに制限するには、どのような方法を使用できますか? その型のインスタンスをインスタンス化して GetDefaultValue 関数から返すにはどうすればよいですか?

4

2 に答える 2

2

私はあなたが何を意味するのか混乱しています..しかし、ジェネリックを使用する代わりに(ジェネリックなしで?)、型をインターフェースに制約することができます。

public ISomeInterface GetDefaultValue(ISomeInterface theObject)
{
  ...
}
于 2012-12-08T19:37:18.310 に答える
0

ジェネリックを使用すると、次のことができます

public static T GetDefaultValue<T>() where T : new(), IDisposable
{
   return new T();
}

ただし、どのタイプに設定Tしても、デフォルトのコンストラクターが必要です。このように、 を呼び出すと、必要な正確な型が得られます。返されたGetDefaultValue()場合のようにキャストする必要はありません。GetDefaultValue()IDisposable

ジェネリック型をインスタンス化する機能はよく知られていないため、ジェネリック ソリューションが必要なかったと思います。私は個人的に偶然これに出くわしました、そして少年、それは命の恩人です!

于 2012-12-08T20:14:36.647 に答える