例:のStructureMap - 実行時にアセンブリを交換する能力
コンソールアプリケーション:
class Program
{
static void Main(string[] args)
{
var calculator = ObjectFactory.GetInstance<ICalculator>();
for (var i = 0; i < 10; i++)
{
Console.WriteLine(calculator.Calculate(10, 5));
Console.ReadLine();
}
Console.ReadLine();
}
}
総会 "インタフェース":
public interface ICalculator
{
int Calculate(int a, int b);
}
アセンブリ "Implemenation":
internal class Calculator : ICalculator
{
public int Calculate(int a, int b)
{
return a + b;
}
}
アセンBLY「Implemenation」、このアセンブリは、実行時に上記のアセンブリを交換しなければならない。
internal class Calculator : ICalculator
{
public int Calculate(int a, int b)
{
return a * b;
}
}
総会「リゾルバ」
For<ICalculator>().Use<Calculator>();
私は、実行時に具体的な実装を置き換えたいです。これは、古いアセンブリ "Implementation"を置き換えるUpdateServiceによって行うことができます。
問題は、アセンブリ「実装」がロックされていることです。私はそれを置き換えることはできません。
これを達成するためには何が必要ですか?
IoCコンテナが自分の要件を担当しているか、独自のインフラストラクチャを構築する必要がありますか?
EDIT:Web環境で
あなたは簡単にアセンブリを交換することができます。私はこれをすでに成功させました。
なぜ-1?コメントを控えてくれてありがとう! – Rookian
実行時にアセンブリを置き換えることによって解決しようとしている問題(または置き換えるレジストレーションのセット)を説明できますか? – Steven
私はそれを閉じて私のアプリケーションを更新する可能性を持っていたいです。つまり、バグがあったのでDALを更新したいのですが、アプリケーションをまだ実行しておく必要があります。 – Rookian