首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要编写一个泛型方法,该方法返回从包装器对象获得的数据对象列表(传递给它)

需要编写一个泛型方法,该方法返回从包装器对象获得的数据对象列表(传递给它)
EN

Stack Overflow用户
提问于 2011-10-18 07:39:56
回答 2查看 468关注 0票数 0

好的,所以基本上我需要创建一个泛型方法,它获取前端对象的列表,检索每个前端对象的包装数据对象,并返回数据对象的列表。

我在一个单例类中编写了这个方法。

代码语言:javascript
复制
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的实体对象(由Entity-Model Framework生成)。为了给User添加功能,我创建了一个名为ClassFrontend的包装器对象,其中类被替换为相关的实体标题(例如,UserFrontend、RoleFrontend等)。

我在前端类Data中调用了实体对象。

现在我想要有一个泛型方法,我给它一个前端项目的列表,它给我返回一个实体对象的列表--当然这个列表是相同类型的:示例全部是UserFrontend,或者全部是RoleFrontend,依此类推。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-18 07:47:55

我会让FrontEnd对象实现如下所示的接口:

代码语言:javascript
复制
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();
    }
}
票数 2
EN

Stack Overflow用户

发布于 2011-10-18 07:45:19

使用GetDataItem()方法创建一个接口,在所有实体中实现它,并将您的方法约束为where T : IYourEntity

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7800886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档