public static object Wrap(object obj, Type wrapperType)
 {
     DoNotRemove(obj);
     DoNotRemove(wrapperType);
     if (obj == null)
     {
         return(null);
     }
     return(ReflectionHelperExtensions.Wrap(obj, wrapperType));
 }
        public void Simple()
        {
            var ti = ReflectionHelperExtensions.DefineWrapper <StaticFulentAPITestObject, IFluentAPITestObject>()
                     .DefineProperty(x => x.PrivateStringProperty)
                     .BindingFlags(BindingFlags.NonPublic)
                     .EndMember()
                     .DefineProperty(x => x.stringField)
                     .BindingFlags(BindingFlags.NonPublic)
                     .FieldAccessor()
                     .EndMember()
                     .DefineMethod(x => x.PrivateMethod(null))
                     .BindingFlags(BindingFlags.NonPublic | BindingFlags.Public)
                     .EndMember()
                     .Create();

            Assert.AreEqual("hello", ti.PublicMethod("hello"));
            ti.stringField = "hello";
            Assert.AreEqual("hello", ti.stringField);
        }