在linq语句中使用带有初始化值的structuremap getinstance

时间:2010-01-25 19:39:28

标签: linq structuremap

我不知道怎么问这个,但我想在linq语句中创建一个新对象,并初始化它的值。因为我必须使用StructureMap的GetInstance方法来获取对象的实例,所以我认为这不可行。我错了吗?在我们离开主题之前,我意识到我可能会创建一个构造函数来获取我想要使用的值,但我想知道是否有任何方法可以使用初始化器和结构图来完成它。我在结构图上真的很弱,而且据我所知,可能有一种简单的方法我只是错过......

感谢您的任何想法。

//基本上,当我没有groupid的现有对象时,我正在创建一个新对象 //从概念上讲,如果用户尚未归属,则会将用户添加到所选组中 来自GroupIDs中的g!OriginalGroups.Exists(ug => ug.SecurityGroupID == g)选择StructureMap.ObjectFactory.GetInstance(){//初始化usertosecuritygroup的值};

//如果我不依赖DI,我会怎么做。 来自GroupIDs中的g!OriginalGroups.Exists(ug => ug.SecurityGroupID == g)选择新的UserToGroup {UserID = UserID,GroupID = g};

1 个答案:

答案 0 :(得分: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);
    }
}