T4Scaffolding访问泛型集合T属性

时间:2013-02-27 02:07:46

标签: asp.net-mvc-scaffolding t4scaffolding

鉴于以下课程:

public class Post
{
    public Post()
    {
        Tags = new List<Tag>();
    }

    public int Id { get; set; }

    // ...more properties...

    public virtual ICollection<Tag> Tags { get; set; }
}

和我的ps1条目代码:

$model = Get-ProjectType $EntityName -Project $Project

Add-ProjectItemViaTemplate $controllerName -Template ControllerTemplate `
    -Model @{ Namespace = $namespace; T = [MarshalByRefObject]$model; } `
    -SuccessMessage "Added ControllerTemplate output at {0}" `
    -TemplateFolders $TemplateFolders -Project $Project -CodeLanguage $CodeLanguage -Force:$Force

其中$ model是Post类。

我如何获得对“Tag”对象属性的访问权?

我将“标签”ICollection作为EnvDTE.CodeTypeRef。

我注意到大多数mvcscaffolding正在使用Get-relatedEntities来解包泛型 - 这是访问Tag属性的唯一方法吗?

1 个答案:

答案 0 :(得分:1)

查看此视频的第一部分。它将向您展示如何从Visual Studio中的类中收集属性。

编辑:

如果您没有时间观看视频...只需在包管理器控制台中使用此代码段即可。

(Get-ProjectType标签).Children | Where-Object {$ .Kind -eq 4} |的ForEach {$ }

我认为使用PowerShell查找所有属性然后将其发送到T4更容易,在T4中使用C#来收集信息非常困难。

T4Scaffolding in Visual Studio

此致 Uffe