I avoir un sentiment que produit et classes ProductTemplate sont en quelque sorte liés (par exemple produit s'étend ProductTemplate). Si j'ai raison, vous pouvez simplement retourner la classe de base (ProductTemplate dans ce cas).
Tomas Lycken a suggéré d'utiliser la méthode générique, qui est à mon avis tout à fait une bonne idée, mais s'il y a une interface commune pour les produits et productTemplate, il vous suffit de retourner cette interface aussi bien au lieu de produit et ProductTemplate.
Exemple (par Tomas Lycken):
public static T ConvertTo<T>(this Document doc) where T : SomeBaseClassOrInterface
{
return null;
}
Exemple (par moi):
public static SomeBaseClassOrInterface ConvertTo(this Document doc)
{
return null;
}
Et s'il n'y a pas d'interface commune et vous ne voulez pas créer un nouveau, s'il vous plaît juste changer de nom :)
Merci, c'est la réponse que je cherchais. – Pickels
ou si vous voulez vraiment garder le nom. vous pouvez mettre les méthodes d'extension dans différents espaces de noms, mais je suggère de coller avec la solution des noms différents, car compter sur l'ordre de vos instructions d'utilisation se traduira par très difficile à lire le code –
Vérifiez la réponse de Tomas. C'est encore mieux. Dans ma vieillesse, j'oublie parfois d'utiliser des génériques. –