質問

一般的に、私は、PSCmdletを実装し、リソースのリークを回避するために破棄が必要なタイプのパラメーターを受け取るIDisposeableを作成しようとしています。また、そのパラメータのstringを受け入れて、そのタイプのインスタンスを作成したいのですが、そのオブジェクトを自分で作成する場合は、ProcessRecordから戻る前に破棄する必要があります。

文字列からArgumentTransformationAttributeオブジェクトを作成するために、パラメータでIDisposeableを使用していますが、オブジェクトを作成したかどうかについて、そのクラスからPSCmdletにデータを渡す方法が見つかりません。例: ジェネラコディセタグプレ

ここでの私の最善の推測は、明示的な破棄が必要であることをタグ付けするためだけに、MyDisposeableClassをサブクラス化することですが、これはかなりハックなようです。この場合は機能しますが、封印されたクラスを処理したい場合は明らかに機能しません。。

これを行うためのより良い方法はありますか?

役に立ちましたか?

解決 2

結局、私は単に、MyDisposeableをラップするタイプを受け入れるパラメーターを使用します。これを行うことに関する私の最初の懸念は、パラメーターに内部型を使用すると、関数のアクセシビリティに影響を与えることでした。(おそらく、ドキュメントに悪影響を与える可能性がありますが、コマンドレットでは、ドキュメントはXMLファイルによって完全に制御されます。)

いくつかのテストの後、パラメータに内部クラスを使用し、変換にパブリック型を受け入れさせるだけで問題はないようです。だから私は単にラッパークラスを作成します: ジェネラコディセタグプレ

そして、代わりにパラメータにそれを取らせます。変換属性で、パラメーターがジェネラコディセタグコードを取得したか、構築されたかに基づいてジェネラコディセタグコードを設定するだけです。例: ジェネラコディセタグプレ

他のヒント

サブクラス化するのではなく、MyDisposableクラスにプロパティを追加できますか? ジェネラコディセタグプレ

次に、属性コードで ジェネラコディセタグプレ

最後に最後のブロックに入る ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top