2010-01-25 2 views
0

어떻게 묻는 지 잘 모르겠지만 linq 문에 새 객체를 만들고 값을 초기화하려고합니다. StructureMap의 GetInstance 메서드를 사용하여 개체의 인스턴스를 가져와야하므로 이것이 가능하지 않다고 생각합니다. 내가 잘못? 그리고 주제를 벗어나기 전에, 사용하고 싶은 값을 취하는 생성자를 만들 수는 있지만, 이니셜 라이저와 구조체 맵으로 할 수있는 방법이 있는지 알고 싶습니다. 나는 구조지도에 정말로 약하다. 그리고 내가 아는 한 모두, 내가 누락 된 간단한 방법이있을 수있다 ...이니셜 라이저 값을 사용하여 linq 문에서 구조체 getinstance 사용

어떤 생각을해도 고맙다.

// 기본적으로 groupid에 대한 기존 객체가 없으면 새 객체를 만듭니다. // 개념적으로, 이것은 이미 속한 경우 선택된 그룹에 사용자를 추가하는 것입니다. from g GroupIDs에서 OriginalGroups.Exists (ug => ug.SecurityGroupID == g)를 선택하십시오. StructureMap.ObjectFactory.GetInstance() {// 사용자 그룹의 값 초기화};

// DI에 의존하지 않으면 어떻게 될까요? g from GroupIDs 여기서! OriginalGroups.Exists (ug => ug.SecurityGroupID == g) 새 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); 
    } 
}