-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 回答