小编Mar*_*ier的帖子

IEnumerable vs IReadonlyCollection vs ReadonlyCollection用于公开列表成员

我花了好几个小时思考暴露名单成员的主题.在与我的类似问题中,John Skeet给出了一个很好的答案.请随便看看.

ReadOnlyCollection或IEnumerable用于公开成员集合?

我通常非常偏执暴露列表,特别是如果您正在开发API.

我一直使用IEnumerable来公开列表,因为它非常安全,而且它提供了很大的灵活性.我在这里举一个例子

public class Activity
{
    private readonly IList<WorkItem> workItems = new List<WorkItem>();

    public string Name { get; set; }

    public IEnumerable<WorkItem> WorkItems
    {
        get
        {
            return this.workItems;
        }
    }

    public void AddWorkItem(WorkItem workItem)
    {
        this.workItems.Add(workItem);
    }
}
Run Code Online (Sandbox Code Playgroud)

任何针对IEnumerable进行编码的人都非常安全.如果我后来决定使用有序列表或其他东西,它们的代码都没有中断,它仍然很好.这样做的缺点是IEnumerable可以被强制转换回这个类之外的列表.

出于这个原因,许多开发人员使用ReadOnlyCollection来公开成员.这是非常安全的,因为它永远不会被强制转换为列表.对我来说,我更喜欢IEnumerable,因为它提供了更大的灵活性,我是否想要实现与列表不同的东西.

我想出了一个我更喜欢的新想法.使用IReadOnlyCollection

public class Activity
{
    private readonly IList<WorkItem> workItems = new List<WorkItem>();

    public string Name { get; set; }

    public IReadOnlyCollection<WorkItem> WorkItems
    {
        get
        {
            return new ReadOnlyCollection<WorkItem>(this.workItems);
        }
    }

    public void AddWorkItem(WorkItem workItem)
    {
        this.workItems.Add(workItem);
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# ienumerable encapsulation list

59
推荐指数
4
解决办法
3万
查看次数

通过电子邮件发送HTML文档,使用c#嵌入图像

所以这是我的情况.

我需要以HTML格式发送电子邮件,其中嵌入了图像.我尝试将我的图像转换为base64,但它不起作用.

该电子邮件有3个图像,类型为System.Drawing.Image.我只需要在我的html格式化字符串中获取它们.

html c#

4
推荐指数
2
解决办法
3万
查看次数

使用EPPlus从excel获取所有单元格值

我想使用EPPlus库中的ExcelWorksheet对象,并检索具有值及其位置的所有单元格.

在一天结束时,我想要一本类似的字典.

Dictionary<KeyValuePair<int, int>, object> values.
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种漂亮而干净的方法来将单元格值提取到此字典中以供使用.

我很清楚你可以直接引用单元格值,如下所示,但是有一个很好的清除方法来提取所有数据吗?

worksheet.Cells[row, column];
Run Code Online (Sandbox Code Playgroud)

c# epplus

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×3

.net ×1

encapsulation ×1

epplus ×1

html ×1

ienumerable ×1

list ×1