カスタム足場を作成するために T4Scaffolding を使用しています。次の PS コードを使用して、プロジェクト内のすべてのドメイン オブジェクトのリストを取得します。
# List of all domain classes. Get all top level files/folders in the project | drill down to Models folder | Enumerate ProjectItems | Where Name ends with .cs | Select name truncating .cs, pluralized name
$domainClasses = (Get-Project "Domain").ProjectItems | Where { $_.Name -eq "Models" } | ForEach { $_.ProjectItems } | Where { $_.Name.EndsWith('.cs') } | Select @{ Name = 'Name'; Expression={ $_.Name.SubString(0,$_.Name.Length - 3) } }, @{ Name = 'Plural'; Expression={ Get-PluralizedWord $_.Name.SubString(0,$_.Name.Length - 3) } }
if (!$domainClasses) { $domainClasses = @() }
次に、次のように Add-ProjectItemViaTemplate メソッドを呼び出します。
Add-ProjectItemViaTemplate $outputPath -Template MyTemplate `
-Model @{ DomainClasses=[Array]$domainClasses } `
-SuccessMessage "Added Domain output at {0}" `
-TemplateFolders $TemplateFolders -Project $DomainProjectName -CodeLanguage $CodeLanguage -Force:$Force
sacffold を実行すると、次の例外が発生します。
System.Runtime.Serialization.SerializationException: Type 'System.Management.Automation.PSCustomObject' in assembly 'System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable.
問題は、何らかの理由で $domainClasses 変数をシリアル化できないことです。私は何を間違っていますか?