コード例 #1
0
        private void Clone <TParam>(TParam parameters, Func <MemberInfo, bool> customHandler = null) where TParam : IShallowCloneable <TParam>
        {
            AssertEx.AllPropertiesAndFieldsAreNotDefault(parameters, i =>
            {
                if (i.Name == "PageSize" && i.GetValue(parameters).Equals(500))
                {
                    Assert.Fail("Property 'PageSize' did not have a value.");
                }

                if (customHandler != null)
                {
                    return(customHandler(i));
                }

                return(false);
            });

            try
            {
                AssertEx.AllPropertiesAndFieldsAreEqual(parameters, parameters);
            }
            catch (AssertFailedException ex)
            {
                throw new AssertFailedException($"Source object was not self equatable: {ex.Message}", ex);
            }

            var clone = ((IShallowCloneable <TParam>)parameters).ShallowClone();

            AssertEx.AllPropertiesAndFieldsAreEqual(parameters, clone);
        }