2012-02-13 5 views
2

私は新しいプロジェクトでMEFとWindsorと協力しています。ウィンザーパッケージとコードブレークが更新されました。我々が持っているために使用する :MefContrib.SamplesからWindsor.CastleがIHandlerを変更します。サービスが終了しましたか?

private void RegisterCastleComponent(IHandler handler) 
{ 
    var name = handler.ComponentModel.Name; 
    var type = handler.Service; 
    // By default, Windsor assigns implementation's full name for the key, 
    // but for a default key we want to pass null instead 
    if (handler.ComponentModel.Implementation.FullName == name) 
    { 
     name = null; 
    } 

     OnRegisteringComponent(type, name); 
} 

ウィンザーdoesntのはCastle.Windsor.dllでそのIHandlerで.Service、v4.0.30319

方法を持っています私は上記を実装する必要がありますか?

IEnumerableの.Servicesを取得できます。 最初に登録してください。何が意味ですか?

なぜ今サービスがあるのですか?

おかげ

実際

、行くと確認しなかったBreakingChanges.txt:

========================== ==============================================================================================================================================================================================変更 - サービスは内部的に処理されます。これには、 APIにいくつかの変更が含まれています。 ForwardingHandlerクラスとIHandlerFactory.CreateForwardingメソッドが削除されました。 ComponentModel.ServiceプロパティがClassServiceおよびInterfaceServices プロパティに置き換えられました。また、AddServiceメソッドが追加されました。サービスのコンストラクタの引数は、単一のTypeの代わりに をType []に​​変更しました。 IHandler.Serviceプロパティが削除され、Servicesプロパティに置き換えられました。 IComponentModelBuilder.BuildModelメソッドは、ICollection isnteadを単一のタイプ のサービスとして使用します。ComponentRegistration.For(型serviceType、params型[] forwaredTypes)メソッドが削除されました。低 定着性 - - 容易

説明 - 改善の一環として内部アーキテクチャに一つのサービスより 以上を露出コンポーネントの処理方法変更 ComponentFilterデリゲート型はもはや必要

影響として除去しました。

修正 - この変更は、コンテナの内部を拡張しない限り、ほとんどのユーザーに影響しません。 の場合は、新しいシグネチャへの呼び出しを調整し、コードを変更して、ForwardedHandlersが特定のコンポーネントに対してIHnadlerを解決するサービスコレクションを使用するようにする================= ========================================== =====

私はそれがかなり私の質問に答えるthikn。

またはそれはありません: これは実際の実装ですか? サービス名のalogのタイプを取得するには?デフォルトキーの "handler.ComponentModel.Implementation.FullName"に対するチェックを行います。

またはそのままそのまま渡しましたか?

おかげ

答えて

0

ComponentModelタイプは、後者が前者の実装を示す、両方ServiceImplementationプロパティを公開します。あなたはウィンザーの部品を登録するためにそれらを使用できますか?この上の任意のニュースがある場合

+0

これは何の問題かと思われます。 ComponentModelはそれ以上サービスを通知しません。最新のCastle.Windsor.dll、v4.0.30319をチェックして、breakinChanges.txtの抜粋を確認してください。したがって、新しいものでは、実装には多くのサービスがあります。私の問題が見えますか?私は本当に嫌なことを逃していますか? – ErMasca

+0

Lol、 'IHandler'は' Services'を公開しなくなりましたが、 'IHandler.ComponentModel'はまだそれが必要ですか? –

+0

わずかな修正、サービスはIHandlerにはなく、ComponentModel.Servicesは公開されていますが、サービスはありません。どのように実装の下で適切に型を登録しますか? – ErMasca

関連する問題