鉴于以下示例...
public class Example
{
public static T GetDefaultValue<T>()
{
// return ???
}
}
在不使用泛型的情况下,我可以使用什么方法将传入 GetDefaultValue 函数的类型限制为具有实现 IDisposable 的无参数构造函数的类?我将如何实例化该类型的实例以从 GetDefaultValue 函数返回?
我对您的意思感到困惑..但是您可以将类型限制为接口,而不是使用泛型(没有泛型?)。
public ISomeInterface GetDefaultValue(ISomeInterface theObject)
{
...
}
使用泛型,你可以做
public static T GetDefaultValue<T>() where T : new(), IDisposable
{
return new T();
}
但是,无论您设置T
为哪种类型,都必须具有默认构造函数。这样,调用GetDefaultValue()
将为您提供所需的精确类型,而无需像GetDefaultValue()
返回IDisposable
.
我假设您不想要泛型解决方案,因为实例化泛型类型的能力并不为人所知。我个人偶然发现了这个,男孩,它是救生员吗!