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