使用自定义集合进行封装

发布于 2025-01-23 09:44:35 字数 1053 浏览 0 评论 0原文

我想创建自己的集合,该集合是从ReadOnLyCollection继承的,以将我的域模型逻辑封装在其中。

public class Product : Entity
{
    public string Name { get; set; }

    private readonly List<ProductAttachment> _attachments = 
        new List<ProductAttachment>();

    public Attachment<ProductAttachment> Attachments => new Attachment<ProductAttachment>(_attachments);
}
public class Attachment<TFileEntity> : ReadOnlyCollection<TFileEntity> where TFileEntity : FileEntity<int>
{
    public void AddAttachment(TFileEntity fileEntity)
    {
        Items.Add(fileEntity);
    }

    public Attachment(IList<TFileEntity> list) : base(list)
    {
    }
}

接下来,我尝试添加一个附件

foreach (var attachment in request.Attachments)
{
    product.Attachments.AddAttachment(new ProductAttachment(attachment.FullName, attachment.Content))    
}

,然后尝试通过_context.products.add(product)或GET添加对象后,我遇到了一个错误

。 1 [域名。

我该如何解决这个问题?我想最终得到一个自定义集合,其中逻辑被封装。 也许我做错了什么?

I want to create my own collection which is inherited from ReadOnlyCollection in order to encapsulate my domain model logic in it.

public class Product : Entity
{
    public string Name { get; set; }

    private readonly List<ProductAttachment> _attachments = 
        new List<ProductAttachment>();

    public Attachment<ProductAttachment> Attachments => new Attachment<ProductAttachment>(_attachments);
}
public class Attachment<TFileEntity> : ReadOnlyCollection<TFileEntity> where TFileEntity : FileEntity<int>
{
    public void AddAttachment(TFileEntity fileEntity)
    {
        Items.Add(fileEntity);
    }

    public Attachment(IList<TFileEntity> list) : base(list)
    {
    }
}

Next, I try to add an attachment

foreach (var attachment in request.Attachments)
{
    product.Attachments.AddAttachment(new ProductAttachment(attachment.FullName, attachment.Content))    
}

And after I try to add the object via _context.Products.Add(product) or get, I get an error

No coercion operator is defined between types 'System.Collections.Generic.List1[Domain.Entities.ProductAttachment]' and 'Domain.Common.Attachment1[Domain.Entities.ProductAttachment]'.

How can I solve this problem? I would like to end up with a custom collection where the logic is encapsulated.
Maybe I'm doing something wrong?

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

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

发布评论

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

评论(1

梨涡 2025-01-30 09:44:35

您的收藏可以阅读,您会在那儿添加Elments。我认为它的坏主意。

而且,如果您可以使用foreach循环为您的集合使用,则必须从ienumerable继承您的集合,并实现 getEnumerator 方法>返回ienumerator ienumerator < /代码>

Your collection ReadOnly , and you wonna add elments there.I think its bad idea.

And if you wonna use foreach loop for your collection you must be inherit your collection from IEnumerable and implement GetEnumerator method which return IEnumerator

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