繁体   English   中英

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

[英]Need to write a Generic method which returns a list of data objects obtained from wrapper objects (passed to it)

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

我在singleton类中编写了这个方法。

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的包装器对象,其中class被所讨论的实体标题替换(例如,UserFrontend,RoleFrontend等)。

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

现在我想要一个Generic方法,我给它一个前端项列表,它给了我一个实体对象列表 - 自然列表将是所有相同的类型:示例所有UserFrontend,或所有角色等等

谢谢。

我会让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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM