修复set.ServiceAddress为空时导致的对象为空Bug
猿人易 编写于 2024-05-17 17:50:25
NewLife.Cube
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NewLife.Reflection;
using XCode;
using XCode.Membership;
using Xunit;

namespace XUnitTest
{
    public class EntityExtensionTests
    {
        [Fact]
        public void ToDictionary()
        {
            var list = new List<User>
            {
                new User { Name = "Stone", DisplayName = "大石头" },
                new User { Name = "NewLife", DisplayName = "新生命" }
            };

            var type = list.GetType();
            var value = (Object)list;

            var rs1 = type.As(typeof(IEnumerable<>));
            Assert.True(rs1);

            var elmType = type.GetElementTypeEx();
            Assert.Equal(typeof(User), elmType);

            var rs2 = elmType.As(typeof(IEntity));
            Assert.True(rs2);

            var mtype = typeof(EntityExtension);
            var method = mtype.GetMethod("ToDictionary");
            Assert.NotNull(method);

            //var vs = mtype.Invoke(method, value);
            //Assert.NotNull(vs as IEnumerable);

            IEntityFactory factory = null;
            var dic = new Dictionary<String, String>();
            foreach (IEntity entity in value as IEnumerable)
            {
                factory ??= entity.GetType().AsFactory();

                var key = entity[factory.Unique.Name] + "";
                dic[key] = entity + "";
            }
            Assert.True(dic.Count > 0);
        }
    }
}