0
votes

Instanciation d'une classe dérivée d'un générique qui a des paramètres dans son constructeur

J'ai cette classe générique foo code> avec deux constructeurs. L'un d'entre eux accepte le nombre variable de paramètres à l'aide des paramètres code> code>. L'autre classe NONGENERIC BAR CODE> est dérivé de FOO code>. Le problème est que bar code> n'accepte pas l'instanciation avec constructeur qui a parames code>.

Ceci est un échantillon: p>

using System;

namespace ConsoleApp1
{
    class Foo<T> where T : IComparable<T>
    {
        private Foo() { }
        public Foo(params T[] list) : this() { }
    }
    class Bar : Foo<int> { }


    class Program
    {
        static void Main(string[] args)
        {
            Foo<int> foo = new Foo<int>(1, 2); // it compiles
            Bar bar = new Bar(1, 2); // but CS1729 here!
        }
    }
}


0 commentaires

3 Réponses :


3
votes

Vous manquez d'implémenter ce constructeur à partir de FOO in bar : xxx


0 commentaires

2
votes

Cela n'a rien à voir avec les génériques. C'est juste que les constructeurs ne sont pas, par défaut, hérité des classes d'enfants. Le fait que foo a un parames int [] constructeur ne signifie pas automatiquement bar l'a aussi:

Tous les membres d'une classe de base sont hérités par des classes dérivées. Les membres suivants ne sont pas hérités:


0 commentaires