En train de regarder le explanation de IQueryable de Bart De Smet et il a mentionné les types existentiels (que j'ai été curieux pendant quelque temps). Après avoir lu les réponses à cette question Je me demande si cela est un moyen de construire en C#:Est-ce que ce code décrit un type existentiel en C#?
public abstract class SomeExistentialType
{
private SomeExistentialType() { }
public abstract int Foo();
public ExistentialType Create()
{
return new ConcreteType1();
}
private class ConcreteType1: SomeExistentialType
{
public override int Foo()
{
//some implementation...
}
}
private class ConcreteType1: SomeExistentialType
{
public override int Foo()
{
//some implementation...
}
}
private class ConcreteType1: SomeExistentialType
{
public override int Foo()
{
//some implementation...
}
}
}
L'idée est que si toutes les classes concrètes sont définies comme des classes imbriquées privées (ou peut-être juste classes internes), vous êtes obligé de n'utiliser que l'interface.
Certaines personnes ont commenté l'une des demandes de fonctionnalités que j'avais faites sur le site Microsoft .Connect pour expliquer le besoin de types existentiels. C'est la première fois que j'entends parler de cette phrase. https://connect.microsoft.com/VisualStudio/feedback/details/576675/feature-request-for-composable-generic-types-within-a-type-definition?wa=wsignin1.0#details – jpierson