迭代通用类型<T>

Iterate over a generic type<T>

我不知道这是否可行,但我会尽我所能来解释自己。感谢您的帮助。

我正在尝试将这些实体对象与第三方集成。

我的问题是,我有这3种来自第三方的实体类型,ObjectType1,ObjectType2,ObjectType3对象类,它们都有相同的基础,所以,我的想法为了不再重复代码多次是创建一个接受一个通用列表的函数,并在其中尝试转换为我想要的对象类型并用于将信息保存在我的主要实体中。

我不知道这是否可行,或者您会推荐我做什么,因为我想做的是不要重复多次代码。

再次感谢。

        public static List<ItemsToSave> TestList<T>(List<T> listOfT)
        {

            var itemsToSave = new List<ItemsToSave>();

            foreach (var item in listOfT)
            {
                object obj = null;
 
                switch (listOfT)
                {
                    case List<ObjectType1>:
                        obj  = item as ObjectType1;
                        break;
                    case List<ObjectType2>:
                        obj = item as ObjectType2;
                        break;
                    case List<ObjectType3>:
                        obj = item as ObjectType2;
                        break;
                }

                var itemtosaveEntity = new ItemsToSave()
                {
                    FirstName = obj.FirstName,
                    MiddleName = obj.MiddleName,
                    LastName = obj.LastName,
                };

                itemsToSave.Add(itemtosaveEntity);

            }

            return itemsToSave;
        }

您可以这样定义通用函数:

public static List<ItemsToSave> TestList<T>(List<T> listOfT) where t : BaseClass

这称为“Where 泛型约束”,阅读更多内容Here

这样你的函数中的类型将是 BaseClass 并且你可以访问 class.

中定义的所有属性

试试这个

var listOfT = new List<BaseType>();
List<ItemsToSave> itemsToSave = ConvertList(listOfT);

public static List<ItemsToSave> ConvertList<T>(List<T> listOfT) where T : BaseType
{
    return
        listOfT
            .Select(i => new ItemsToSave()
            {
                FirstName = i.FirstName,
                MiddleName = i.MiddleName,
                LastName = i.LastName,
            })
            .ToList();
}