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

发布于 2024-12-10 14:02:34 字数 734 浏览 0 评论 0原文

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

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

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 的包装对象,其中类被相关实体标题替换(例如,UserFrontend、RoleFrontend 等)。

我将前端类中的实体对象称为 Data。

现在我想要一个通用方法,我给它一个前端项目列表,它给我一个实体对象列表 - 自然该列表将是相同类型的:例如所有 UserFrontend 或所有RoleFrontend 等。

谢谢。

Ok, so basically I need to create a generic method which takes a list of frontend objects, retrieves the wrapped data object of each frontend object and returns a list of data objects.

I have written this method inside a singleton class.

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

Quite naturally, T.GetUser() does not exist. To give you a better idea of what I intend to do:

I have an entity object called User (generated by the Entity-Model Framework). To add functionality to User, I created a wrapper object called ClassFrontend where class is replaced by the entity title in question (for example, UserFrontend, RoleFrontend, etc).

I called the entity object inside the frontend class Data.

Now I would like to have a Generic method, which I give it a list of frontend items, and it gives me back a list of entity objects - naturally the list would be all of the same type: example all of UserFrontend, or all of RoleFrontend, etc.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

四叶草在未来唯美盛开 2024-12-17 14:02:34

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

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

I would make the FrontEnd objects implement an interface like below:

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();
    }
}
带上头具痛哭 2024-12-17 14:02:34

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

Create an interface with a GetDataItem() method, implement it in all of the entities, and constrain your method to where T : IYourEntity.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文