2013-02-27 30 views
0

考慮下面的類: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 

其中$模式是Post類。

我將如何訪問「標籤」對象屬性?

我有「標記」ICollection作爲EnvDTE.CodeTypeRef。

我注意到大多數mvcscaffolding正在使用Get-RelatedEntities來打開泛型 - 這是訪問Tag屬性的唯一方法嗎?

+0

附加VS調試器沒有幫助。顯示代理對象,我無法在監視窗口中轉換爲有效的已知類型。所以我採用了Get-RelatedEntities的方式。 – 2013-02-27 07:01:09

回答

1

看看這部影片的第一部分。它將向您展示如何從Visual Studio中的類中收集屬性。

編輯:

如果你沒有觀看視頻......就在包管理器控制檯使用這個片段的時間。

(Get-ProjectType Tag).Children | Where-Object {$ .Kind -eq 4} |對於每個{$}

我認爲用powershell找到所有屬性然後將它發送到T4比較容易,在T4中使用C#來收集信息很困難。

T4Scaffolding in Visual Studio

問候 Uffe

+0

感謝您關注此事 – 2013-03-18 14:13:04