I know that you can’t have a constructor in an interface, but here is what I want to do:
interface ISomething
{
void FillWithDataRow(DataRow)
}
class FooClass<T> where T : ISomething , new()
{
void BarMethod(DataRow row)
{
T t = new T()
t.FillWithDataRow(row);
}
}
I would really like to replace ISomething‘s FillWithDataRow method with a constructor somehow.
That way, my member class could implement the interface and still be readonly (it can’t with the FillWithDataRow method).
Does anyone have a pattern that will do what I want?
(I should have checked first, but I’m tired – this is mostly a duplicate.)
Either have a factory interface, or pass a
Func<DataRow, T>into your constructor. (They’re mostly equivalent, really. The interface is probably better for Dependency Injection whereas the delegate is less fussy.)For example: