需要编写一个泛型方法,该方法返回从包装器对象获得的数据对象列表(传递给它)
本文关键字:对象 数据 列表 包装 返回 一个 泛型方法 方法 | 更新日期: 2023-09-27 18:11:36
好的,所以基本上我需要创建一个通用方法,它接受前端对象列表,检索每个前端对象的包装数据对象,并返回数据对象列表。
我已经在一个单例类中编写了这个方法。
public IEnumerable<T> GetDataItemsFromFrontend<T>(IEnumerable<T> frontendItems)
{
List<T> dataItems = new List<T>();
foreach(T frontendItem in frontendItems)
{
dataItems.Add(T.GetDataItem());
}
return dataItems;
}
很自然地,T.GetUser()不存在。为了让你更好地了解我打算做什么:
我有一个名为User的实体对象(由实体模型框架生成)。为了给User添加功能,我创建了一个名为ClassFrontend的包装器对象,其中class被所讨论的实体标题(例如,UserFrontend, RoleFrontend等)所取代。
我调用了前端类Data中的实体对象。
现在我想有一个泛型方法,我给它一个前端项目列表,它给我一个实体对象列表-自然列表将是相同的类型:例如所有的UserFrontend,或所有的RoleFrontend,等等。
谢谢。
我会让FrontEnd对象实现如下接口:
public interface IFrontEndEntity<TEntity>
{
TEntity GetEntity();
}
public static class FrontEndExtensions
{
public static IEnumerable<TEntity> GetEntities<TEntity>(this IEnumerable<IFrontEndEntity<TEntity>> frontEndItems)
{
return frontEndItems.Select(a => a.GetEntity());
}
}
public class Dog
{
}
public class DogFrontEnd : IFrontEndEntity<Dog>
{
public Dog Entity { get; set; }
public Dog GetEntity()
{
return Entity;
}
}
public class Main
{
public void Run()
{
IEnumerable<DogFrontEnd> dogFronEnds = new List<DogFrontEnd>();
IEnumerable<Dog> dogs = dogFronEnds.GetEntities();
}
}
创建一个带有GetDataItem()
方法的接口,在所有实体中实现它,并将您的方法约束为where T : IYourEntity