これが可能です。 [インポート]属性をコンストラクタのパラメータに適用して、コンストラクタをプライベートにする必要があります。私はあなたのコードに基づいて次のサンプルを作った、それは動作し、あなたはそれをテストすることができます。
まず、私が述べた変更でTwoMessageHubService:
:コンストラクタはTwoWayMessageHubServiceのインスタンスで構成されなければならないクラス次に
プライベート
であることを
[Export]
[PartCreationPolicy(CreationPolicy.Shared)]
public class TwoWayMessageHubService
{
[ImportingConstructor]
private TwoWayMessageHubService([Import]ILogger logger) { }
}
お知らせ
public class Implementer
{
[Import]
public TwoWayMessageHubService MHS { get; set; }
}
ロガーデコレートD とエクスポート
public interface ILogger { }
[Export(typeof(ILogger))]
public class Logger : ILogger { }
をメイン:あなたがコメント(笑)そして、あなたはそれがコンパイルされないことがわかりますコメントを解除した場合
var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
var container = new CompositionContainer(catalog);
var implementer = new Implementer();
container.ComposeParts(implementer);
//var IdoNotCompile = new TwoWayMessageHubService(new Logger());
Console.ReadLine();
。
希望はこれを使用すると、 `[廃止]`として、コンストラクタをマークして作られた場合は何を
そうでもない解決に役立ちますが、FxCopの/ StyleCop(これは覚えていない) 'Obsolete'フィールド/メソッドの使用方法のスローコンパイルエラー? –
なぜあなたのコードに意図的に障害があるのですか? – Amy