Je pense que l'idée est que vous ne pouvez pas marquer un type générique comme ComVisible
directement, mais vous pouvez avoir ce type implémenter des interfaces non génériques qui sont ComVisible
.
Ainsi, étant donné un Baker<Recipe>
générique, vous devez présenter quelque chose comme:
[ComVisible(true)]
public interface IBake
{
Pastry Bake();
}
public class Baker<Recipe> : IBake
{
public Baker(Recipe ingredients) {...}
public Pastry Bake()
{
...
}
}
[ComVisible(true)]
public class Bakery
{
public IBake GetBaker(string recipe)
{
// somehow get recipe type from string
// and create and return Baker<Recipe>
// Client can now call IBake.Bake().
}
}
Je suppose que c'est le « indirectement » que l'article parle. Je ne vois pas ce que la collection Controls de VB.NET a à faire avec ça, cependant ...
Pouvez-vous élaborer? Vous dites que cela ne peut pas être fait alors demandez comment cela peut être fait. Avez-vous un scénario spécifique? –
L'article référencé dit 'directlty', donc je suppose qu'il y a un moyen de les utiliser 'indirectement'. L'exemple spécifique est celui-ci: http://stackoverflow.com/questions/1200576/find-all-controls-on-msform-from-c – jedd
Juste pour ajouter plus d'informations, VB.NET doit faire le 'quelque chose d'indirect' comme le code réfréné fonctionne. Si j'ai mal orthographié la collection Contrôles, j'obtiens l'erreur: System.MissingMemberException 's'est produite dans Microsoft.VisualBasic.dll Donc, j'ai besoin de savoir quel est le quelque chose qui manque, pour que le code fonctionne dans C#! – jedd