我不知道怎么问这个,但我想在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};
答案 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);
}
}