У меня такое ощущение, что Product и ProductTemplate классы каким-то образом связаны (например, Product extends ProductTemplate ).Если я прав, вы можете просто вернуть базовый класс ( ProductTemplate в данном случае).
Томас Ликен предложил использовать универсальный метод, что, на мой взгляд, неплохая идея, ноесли есть общий интерфейс для Product и productTemplate, вы можете просто вернуть этот интерфейс вместо Product и ProductTemplate .
Пример (автор Tomas Lycken):
public static T ConvertTo<T>(this Document doc) where T : SomeBaseClassOrInterface
{
return null;
}
Пример (от меня):
public static SomeBaseClassOrInterface ConvertTo(this Document doc)
{
return null;
}
И если нет общего интерфейса и вы не хотите создавать новый, просто измените имена:)