Это просто любопытство о том, есть ли какая-то фундаментальная вещь, останавливающая что-то подобное (или поправьте меня, если уже есть какой-то способ):
public TTo Convert<TTo, TFrom>(TFrom from)
{
...
}
Вызывается так:
SomeType someType = converter.Convert(someOtherType);