Конструктор C# в интерфейсе

Если Вам нравится Eclipse за Java, я предлагаю CDT Eclipse. Несмотря на C/C++ поддержка не так мощна, как для Java, это все еще предлагает большинство функций. Это имеет хорошую функцию под названием Управляемый Проект, который делает работу с проектами C/C++ легче, если у Вас нет опыта с Make-файлами. Но можно все еще использовать Make-файлы. Я делаю C и кодирование Java, и я действительно доволен CDT. Я разрабатываю встроенное микропрограммное обеспечение для встроенного устройства в C и приложения в Java, который говорит с этим устройством и действительно хорош использовать ту же среду для обоих. Я предполагаю, что это, вероятно, делает меня более продуктивным.

5
задан Nisarg 26 October 2017 в 13:23
поделиться

2 ответа

(I should have checked first, but I'm tired - this is mostly a duplicate.)

Either have a factory interface, or pass a Func into your constructor. (They're mostly equivalent, really. The interface is probably better for Dependency Injection whereas the delegate is less fussy.)

For example:

interface ISomething 
{      
    // Normal stuff - I assume you still need the interface
}

class Something : ISomething
{
    internal Something(DataRow row)
    {
       // ...
    }         
}

class FooClass<T> where T : ISomething , new()
{
    private readonly Func<DataRow, T> factory;

    internal FooClass(Func<DataRow, T> factory)
    {
        this.factory = factory;
    }

     void BarMethod(DataRow row)
     {
          T t = factory(row);
     }
 }

 ...

 FooClass<Something> x = new FooClass<Something>(row => new Something(row));
3
ответ дан 14 December 2019 в 01:10
поделиться

use an abstract class instead?

you can also have your abstract class implement an interface if you want...

interface IFillable<T> {
    void FillWith(T);
}

abstract class FooClass : IFillable<DataRow> {
    public void FooClass(DataRow row){
        FillWith(row);
    }

    protected void FillWith(DataRow row);
}
6
ответ дан 14 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: