例如,类型AA
,BB
和CC
都具有方法Close()
。他们没有使用void Close()
实现任何类型的接口。是否可以基于具有Close
方法的类型进行类型约束?
public static void CloseThis<T>(this T openObject) where T : Closeable
{
openObject.Close();
}
最佳答案
您可以执行以下操作:
class Abc
{
public void Close()
{ }
}
interface IClosable
{
void Close();
}
class AbcClosable : Abc, IClosable
{ }
class GenClosable<T> where T : IClosable
{ }
然后使用
var genClosable = new GenClosable<AbcClosable>();
或创建通用扩展方法
public static void CloseThis<T>(this T openObject) where T : Closeable
{
openObject.Close();
}
然后将其用作
var abcClosable = new AbcClosable();
abcClosable.CloseThis();