2010-01-25 81 views
0

我不知道如何問這個,但我想在linq語句中創建一個新對象,並初始化它的值。由於我必須使用StructureMap的GetInstance方法來獲取對象的實例,我不認爲這是可能的。我錯了嗎?在我們離題之前,我意識到我可能會創建一個構造函數來接受我想使用的值,但是我想知道是否有任何方法可以使用初始化器和結構映射來完成它。我在結構圖上很虛弱,而且我知道,可能有一個簡單的方法,我只是缺少...在linq語句中使用結構圖getinstance與初始化值

感謝您的任何想法。

//基本上,我創建一個新的對象時,我沒有一個現有的GROUPID //概念,這是將用戶添加到選定的羣體,如果他們不已經給G屬於 在GroupIDs中!OriginalGroups.Exists(ug => ug.SecurityGroupID == g)選擇StructureMap.ObjectFactory.GetInstance(){//初始化usertosecuritygroup的值};

//如果我不依靠DI,我會這麼做。 from g in GroupIDs where!OriginalGroups.Exists(ug => ug.SecurityGroupID == g)select new UserToGroup {UserID = UserID,GroupID = g};

回答

0

如果你開始使用方法鏈,而不是LINQ表達式,你可以做這樣的事情:

[TestFixture] 
public class so_1 
{ 
    public class UserToGroup 
    { 
     public int UserId { get; set; } 
     public int GroupId { get; set; } 
    } 

    [Test] 
    public void TEST() 
    { 
     var container = new Container(); 

     var groupIds = new int[] { 1,2,3,4,5}; 
     var originaGroups = new int[] { 4, 5 }; 

     var result = groupIds.Intersect(originaGroups).Select(group => 
     { 
      var myClass = container.GetInstance<UserToGroup>(); 
      myClass.GroupId = group; 
      return myClass; 
     }); 

     result.First().GroupId.ShouldEqual(4); 
     result.Skip(1).First().GroupId.ShouldEqual(5); 
    } 
}