循环访问泛型类型<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;
}

试试这个

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();
}

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

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

这被称为">凡通用约束",阅读更多此处

这样,函数中的类型将是BaseClass,并且您可以访问该类中定义的所有属性。

最新更新