public void TupleKeyInfoHelper_ParseLarge() { TupleKeyInfoHelper builder = new TupleKeyInfoHelper(typeof(Tuple <int, string, int, string, int, string, int, Tuple <string, int> >)); Expression <Func <Group, Tuple <int, string, int, string, int, string, int, Tuple <string, int> > > > selector = (Group m) => new Tuple <int, string, int, string, int, string, int, Tuple <string, int> >( m.Id, m.Name, m.Id, m.Name, m.Id, m.Name, m.Id, new Tuple <string, int>( m.Name, m.Id)); MemberInfo[] members = null; bool res = builder.TryParseKeySelectorExpression(selector.Body, true, out members); Assert.AreEqual(true, res); Assert.IsNotNull(members); Assert.AreEqual(9, members.Length); for (int i = 0; i < 9; i++) { string expect = i % 2 == 0 ? "Id" : "Name"; Assert.AreEqual(expect, members[i].Name); } }
public void TupleKeyInfoHelper_ParseCreate() { TupleKeyInfoHelper builder = new TupleKeyInfoHelper(typeof(Tuple <int, string>)); Expression <Func <Group, Tuple <int, string> > > selector = (Group m) => Tuple.Create(m.Id, m.Name); MemberInfo[] members = null; bool res = builder.TryParseKeySelectorExpression(selector.Body, true, out members); Assert.AreEqual(true, res); Assert.IsNotNull(members); Assert.AreEqual(2, members.Length); Assert.AreEqual("Id", members[0].Name); Assert.AreEqual("Name", members[1].Name); }