a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
70 lines
1.5 KiB
C#
70 lines
1.5 KiB
C#
using System;
|
|
using System.Linq.Expressions;
|
|
using System.Collections.Generic;
|
|
|
|
public class Node
|
|
{
|
|
Node parent;
|
|
|
|
public Node ()
|
|
{
|
|
Values = new List<int> ();
|
|
}
|
|
|
|
public string Name { get; set; }
|
|
|
|
public Node Parent {
|
|
get {
|
|
return parent ?? new Node ();
|
|
}
|
|
set {
|
|
parent = value;
|
|
}
|
|
}
|
|
|
|
public List<int> Values { get; set; }
|
|
|
|
public static int Main ()
|
|
{
|
|
Expression<Func<Node>> e = () => new Node () { Parent = { Name = "Parent" } };
|
|
var mie = (MemberInitExpression) e.Body;
|
|
if (mie.Bindings[0].BindingType != MemberBindingType.MemberBinding)
|
|
return 1;
|
|
|
|
e.Compile () ();
|
|
|
|
e = () => new Node () { Values = { 1, 2, 3 } };
|
|
mie = (MemberInitExpression) e.Body;
|
|
if (mie.Bindings[0].BindingType != MemberBindingType.ListBinding)
|
|
return 2;
|
|
|
|
e.Compile () ();
|
|
|
|
e = () => new Node () { Parent = null };
|
|
mie = (MemberInitExpression) e.Body;
|
|
if (mie.Bindings[0].BindingType != MemberBindingType.Assignment)
|
|
return 3;
|
|
|
|
e.Compile () ();
|
|
|
|
e = () => new Node () { Values = { } };
|
|
mie = (MemberInitExpression) e.Body;
|
|
if (mie.Bindings[0].BindingType != MemberBindingType.MemberBinding)
|
|
return 4;
|
|
|
|
e.Compile () ();
|
|
|
|
e = () => new Node() { Parent = { Name = "Parent" }, Values = { 4, 5, 7, 8 } };
|
|
mie = (MemberInitExpression) e.Body;
|
|
if (mie.Bindings[0].BindingType != MemberBindingType.MemberBinding)
|
|
return 5;
|
|
|
|
if (mie.Bindings[1].BindingType != MemberBindingType.ListBinding)
|
|
return 6;
|
|
|
|
e.Compile () ();
|
|
Console.WriteLine ("ok");
|
|
return 0;
|
|
}
|
|
}
|