小编Gun*_*son的帖子

使用抽象接口成员的具体实现来实现接口

以下是不可能的,是否有特定原因?

class ClassOfInts : IHaveInts
{
    public MyInt IntHolder { get; }
    // This solves my use case but i'm unsure why this is necessary
    // IInt IHaveInts.IntHolder { get => IntHolder; }
}

interface IHaveInts
{
    IInt IntHolder { get; }
}


class MyInt : IInt
{
    public int TheInt { get; }
}

interface IInt
{
    int TheInt { get; }
}
Run Code Online (Sandbox Code Playgroud)

我认为上面的代码成功地实现了 IHaveInts,因为 MyInt 实现了 IInt。

c#

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

为什么 Json.NET 试图反序列化我的 get only 属性?

我一直在尝试以这样的方式序列化和反序列化我的对象,以便我能够指定要序列化但不反序列化某些属性。

示例代码如下:

public interface ISupYo
{
    string Hi { get; }
}
public class SupYo : ISupYo
{
    public string Hi { get; } = "heya";
}

public interface ISup
{
    int hiyo { get; }
}
public class Sup : ISup
{ 
    public Sup(int hiyo)
    {
        this.hiyo = hiyo;
    }

    public int hiyo { get; }
    public ISupYo yo => new SupYo();
}

var myNewSup = JsonConvert.SerializeObject(new Sup(2));
var mySup = JsonConvert.DeserializeObject<Sup>(myNewSup);
Run Code Online (Sandbox Code Playgroud)

如果我从类中删除构造函数,Sup一切都很好。

但是由于 json.net 尝试构建接口 ISupYo,原样反序列化失败并出现以下错误... …

c# serialization json json.net

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

C# 枚举时替换集合

根据此处的讨论,在互联网上的某个地方,已验证在枚举某些类型的集合时替换它们是可能的/线程安全的。

我下面的测试似乎证实了这一点。

// This test confirmed insufficient by comments
var a = new List<int> { 1, 2, 3 };

Parallel.For(1, 10000, i => {
    foreach (var x in a)
        Console.WriteLine(i + x);
});
Parallel.For(1, 10000, i => a = new List<int> { 1, 2, 3, 4 });
Run Code Online (Sandbox Code Playgroud)

然而,在我开始在代码中实现它之前,我非常想阅读一些官方文档或与此事实相关的一些具体参考资料。

有人可以验证这一点/发布链接吗?

c# multithreading

2
推荐指数
1
解决办法
170
查看次数

标签 统计

c# ×3

json ×1

json.net ×1

multithreading ×1

serialization ×1