J'ai une interface comme suit:.« en utilisant le type générique .... <T> requiert 1 argument de type et des contraintes génériques multiples et utilisant
public interface ITestCase<T> where T : HtmlControl
{
IEnumerable<T> Execute(Manager manager);
}
HtmlControl est une classe de base à partir d'un assemblage 3ème partie
J'ai deux implémentations de cette interface.
l'un d'eux est de retour nul (spécifié par moi), jusqu'à ce que je cloue la logique nécessaire (pas une tâche difficile).
Le problème est, ce que j'appelle 2me de la codebehind de ma forme:
var LoginJuniper = new Login<ArtOfTest.WebAii.Controls.HtmlControls.HtmlDiv>();
LoginProcedure.Login(textBox1.Text, new Test1());
La classe de connexion, et toutes les autres classes, prendre le même argument de contrainte de type (où T est HtmlControl, et tous de la API tierce).
En outre, l'autre problème que j'ai rencontré est lorsque j'utilise plusieurs contraintes de type; est-il possible de dire que T peut être l'un ou l'autre de ces contraintes? Par exemple. si j'ai:
<T> where T : HtmlControl, IElement
Puis-je passer tout type qui peut être une mise en œuvre de IElement et non HtmlControl, ou vice versa? Via seulement l'interface 1. Cela serait très utile car je voulais passer plus de types à ma contrainte de type générique parce que l'inteface et les cas de test que je dérive de l'interface peuvent tester plus que les classes HtmlControls (peut aussi tester les implémentations IElements comme dans l'API tierce me permet d'obtenir des captures d'écran et je voudrais tester ces captures d'écran (obtenir des pixels, affirmer que la couleur est correcte)).
Merci
Pouvez-vous publier un seul programme complet qui illustre le problème? –
Il n'y a pas le réglage correct pour les détails dans cette question. Essayez de vous concentrer sur le problème principal, laissez les autres questions à une autre question si nécessaire plus tard. Montrez-nous la classe en utilisant ITestCase et l'appel à Exécuter. –
AnthonyWJones
Je vais reposer le problème principal dans un fil séparé. Merci. – csharpdev