Использование структуры mapinstance в выражении linq со значениями инициализатора - PullRequest
0 голосов
/ 25 января 2010

Я не уверен, как спросить это, но я хочу создать новый объект в операторе linq и инициализировать его значения. Поскольку мне нужно использовать метод GetInstance для StructureMap, чтобы получить экземпляр объекта, я не думаю, что это возможно. Я ошибся? И прежде чем мы перейдем не по теме, я понимаю, что, возможно, смогу создать конструктор, который будет принимать значения, которые я хочу использовать, но я хочу знать, есть ли способ сделать это с помощью инициализаторов и структурной карты. Я действительно слаба на карте структуры, и, насколько я знаю, может быть, я просто скучаю ...

Спасибо за любые мысли.

// в основном, я создаю новый объект, когда у меня нет существующего для groupid // концептуально, это добавление пользователей в выбранные группы, если они еще не принадлежат из g в GroupID, где! OriginalGroups.Exists (ug => ug.SecurityGroupID == g) выбрать StructureMap.ObjectFactory.GetInstance () {// инициализировать значения usertosecuritygroup};

// Вот как бы я это сделал, если бы не полагался на ДИ. из g в идентификаторах групп, где! OriginalGroups.Exists (ug => ug.SecurityGroupID == g) выберите новую UserToGroup {UserID = UserID, GroupID = g};

1 Ответ

0 голосов
/ 26 января 2010

Если вы начнете использовать цепочки методов вместо выражений 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);
    }
}
...