You can do something like this:
class Abc
{
public void Close()
{ }
}
interface IClosable
{
void Close();
}
class AbcClosable : Abc, IClosable
{ }
class GenClosable<T> where T : IClosable
{ }
then use
var genClosable = new GenClosable<AbcClosable>();
or create generic extension method
public static void CloseThis<T>(this T openObject) where T : Closeable
{
openObject.Close();
}
then use it as
var abcClosable = new AbcClosable();
abcClosable.CloseThis();