2010-01-25 89 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); 
    } 
}