MyStuff.Document
PowerShellでテーブル (またはリスト) にカスタムタイプをContent
表示すると、関数を使用してそのプロパティが表示されませんToString()
。代わりに、PowerShell はコレクションを反復処理し、その中の項目を表示します。私のToString()
機能を使ってほしい。
例:
$doc = New-Object MyStuff.Document
$doc.Content.Add("Segment 1")
$doc.Content.Add("Segment 2")
$doc | select Content
現在、次のように表示されます。
Content
-------
{Segment 1, Segment 2}
表示したいとき:
Content
-------
something custom
「何かカスタム」は私のToString()
関数の出力です。
使用する必要があると思われるファイルを掘り下げました*.format.ps1xml
が、やりたいことを行う方法がわかりません。Update-TypeData
も有望に見えましたが、まだ運がありません。
どんな助けでも大歓迎です。
これらは私が取り組んでいるカスタムタイプです:
namespace MyStuff
{
public class Document
{
public string Name { get; set; }
public FormattedTextBlock Content { get; set; }
}
public class FormattedTextBlock : ICollection<FormattedTextSegment>
{
public void Add(string text)
{
this.Add(new FormattedTextSegment() { Text = text });
}
// ... ICollection implementation clipped
public override string ToString()
{
// ... reality is more complex
return "something custom";
}
}
public class FormattedTextSegment
{
public string Text { get; set; }
public override string ToString()
{
return Text;
}
}
}
アップデート
明確にするために、私は次のような戦略を認識してい$doc | select @{ Expression = { $_.Content.ToString() }; Label = "Content" }
ます。デフォルトでプロパティをフォーマットする方法をPowerShellに伝える方法を探しています。