IoCのオブジェクトを設計するための最良の方法に関する提案を探しています
Iocに登録されているDataContextに依存するオブジェクト(Service)があるとします。
ただし、nameプロパティも必要です。次のようにオブジェクトを設計できます。
class Service
{
public Service(IDataContext dataContext,
string name)
{
this._dataContext = dataContext;
this._name = name
}
public string Name
{
get
{
return _name;
}
}
}
問題は、名前などの文字列オブジェクトの登録が容易ではなく、Iocコンテナでの使用が複雑になるため、Iocコンテナでの使用が非常に複雑になることです。したがって、解決が混乱します。
var service = Ioc.Resolve<Service>( ?? )
もう1つのアプローチは、次のように設計することです。
class Service
{
public Service(IDataContext dataContext)
{
this._dataContext = dataContext;
}
public string Name { get; set; }
}
解決が簡単になりました。
var service = Ioc.Resolve<Service>();
service.Name = "Some name";
唯一のダウンサイトは、名前を指定する必要がなくなったことです。DIまたはIoCの専門家から、これをどのように設計し、具体的なIocコンテナ技術にかなりとらわれないかを聞きたいと思います。
これをどのように使用するかによって大きく異なりますが、名前が実際にオプションである場合は、オプション2が最適です。ただし、名前が必要な場合は、コードの別のポイントに検証ステップを追加することもできますが、Iocを単純化するための設計を行うこともできます。
考え?