初期化が必要なクラスのインターフェースを抽出したいと思います。
public class Example<T>
{
public Example(SomeData data)
{
// initialize self with data
}
public IEnumerable<T> GetObjects(SomeData data)
{
// extract data
}
}
問題は、デフォルト以外の型コンストラクターを強制するインターフェイスを作成できないことです。もちろん、クラスを次のように変更できます。
public interface IExample<T>
{
void Initilize(SomeData data);
IEnumerable<T> GetObjects(SomeData data);
}
public class Example<T> : IExample<T>
{
public void Initilize(SomeData data)
{
// initialize self with data
}
public IEnumerable<T> GetObjects(SomeData data)
{
// extract data
}
}
しかし、これは同じではありません。インスタンス化すると、この型を直接呼び出すことができGetObjects
、その結果、インスタンスが初期化されないという例外が発生するからです。