ArgumentTransformationAttributeからPSCmdletにデータを渡す
-
27-10-2019 - |
質問
一般的に、私は、PSCmdlet
を実装し、リソースのリークを回避するために破棄が必要なタイプのパラメーターを受け取るIDisposeable
を作成しようとしています。また、そのパラメータのstring
を受け入れて、そのタイプのインスタンスを作成したいのですが、そのオブジェクトを自分で作成する場合は、ProcessRecord
から戻る前に破棄する必要があります。
文字列からArgumentTransformationAttribute
オブジェクトを作成するために、パラメータでIDisposeable
を使用していますが、オブジェクトを作成したかどうかについて、そのクラスからPSCmdlet
にデータを渡す方法が見つかりません。例:
ジェネラコディセタグプレ
ここでの私の最善の推測は、明示的な破棄が必要であることをタグ付けするためだけに、MyDisposeableClass
をサブクラス化することですが、これはかなりハックなようです。この場合は機能しますが、封印されたクラスを処理したい場合は明らかに機能しません。。
これを行うためのより良い方法はありますか?
解決 2
結局、私は単に、MyDisposeable
をラップするタイプを受け入れるパラメーターを使用します。これを行うことに関する私の最初の懸念は、パラメーターに内部型を使用すると、関数のアクセシビリティに影響を与えることでした。(おそらく、ドキュメントに悪影響を与える可能性がありますが、コマンドレットでは、ドキュメントはXMLファイルによって完全に制御されます。)
いくつかのテストの後、パラメータに内部クラスを使用し、変換にパブリック型を受け入れさせるだけで問題はないようです。だから私は単にラッパークラスを作成します: ジェネラコディセタグプレ
そして、代わりにパラメータにそれを取らせます。変換属性で、パラメーターがジェネラコディセタグコードを取得したか、構築されたかに基づいてジェネラコディセタグコードを設定するだけです。例: ジェネラコディセタグプレ
他のヒント
サブクラス化するのではなく、MyDisposableクラスにプロパティを追加できますか? ジェネラコディセタグプレ
次に、属性コードで ジェネラコディセタグプレ
最後に最後のブロックに入る ジェネラコディセタグプレ