小编Key*_*red的帖子

Java - 字段名称的别名

说我有一个对象:

Object A
    String field1 = "abc";
    String field2 = "xyz";
Run Code Online (Sandbox Code Playgroud)

上面的json是:

{
    "ObjectA": {
      "field1": "abc",
      "field2": "xyz"
    }
}
Run Code Online (Sandbox Code Playgroud)

在发送json之前,我试图为字段名称创建一个新的id.例如,"field1"被称为"f1","field2"被称为"f2".所以预期的输出json如下所示:

{
    "ObjectA": {
      "f1": "abc",
      "f2": "xyz"
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做.以上可以用干净的方式完成吗?感谢您的帮助和指点.

我正在使用gson.

java gson

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

为什么本地函数生成与匿名方法和Lambda表达式不同的IL?

为什么C#7编译器将本地函数转换为其父函数所在的同一类中的方法.对于匿名方法(和Lambda表达式),编译器为每个父函数生成一个嵌套类,它将包含所有的匿名方法作为实例方法?

例如,C#代码(匿名方法):

internal class AnonymousMethod_Example
{
    public void MyFunc(string[] args)
    {
        var x = 5;
        Action act = delegate ()
        {
            Console.WriteLine(x);
        };
        act();
    }
}
Run Code Online (Sandbox Code Playgroud)

将生成IL代码(匿名方法)类似于:

.class private auto ansi beforefieldinit AnonymousMethod_Example
{
    .class nested private auto ansi sealed beforefieldinit '<>c__DisplayClass0_0'
    {
        .field public int32 x

        .method assembly hidebysig instance void '<MyFunc>b__0' () cil managed 
        {
            ...
            AnonymousMethod_Example/'<>c__DisplayClass0_0'::x
            call void [mscorlib]System.Console::WriteLine(int32)
            ...
        }
        ...
    }
...
Run Code Online (Sandbox Code Playgroud)

虽然这样,C#代码(Local Function):

internal class LocalFunction_Example
{
    public …
Run Code Online (Sandbox Code Playgroud)

c# lambda cil anonymous-methods c#-7.0

12
推荐指数
1
解决办法
636
查看次数

为什么在Console App中没有捕获默认的SynchronizationContext?

我正在尝试更多地了解它SynchronizationContext,所以我制作了这个简单的控制台应用程序:

private static void Main()
{
    var sc = new SynchronizationContext();
    SynchronizationContext.SetSynchronizationContext(sc);
    DoSomething().Wait();
}

private static async Task DoSomething()
{
    Console.WriteLine(SynchronizationContext.Current != null); // true
    await Task.Delay(3000);
    Console.WriteLine(SynchronizationContext.Current != null); // false! why ?
}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,await操作员会捕获当前的信息SynchronizationContext然后将其余的异步方法发布到它.

但是,在我的应用程序中,之后SynchronizationContext.Current为null await.这是为什么 ?

编辑:

即使我自己使用SynchronizationContext它也不会被捕获,尽管它的Post功能被调用.这是我的SC:

public class MySC : SynchronizationContext
{
    public override void Post(SendOrPostCallback d, object state)
    {
        base.Post(d, state);
        Console.WriteLine("Posted");
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我使用它的方式:

var sc = new MySC();
SynchronizationContext.SetSynchronizationContext(sc); …
Run Code Online (Sandbox Code Playgroud)

c# console-application synchronizationcontext async-await

6
推荐指数
1
解决办法
515
查看次数

为什么导航属性在其类是私有时不会填充?

我有这个简单的模型:

class Parent
{
   public int Id { get; set; }

   public virtual ICollection<Child> Children { get; set; }
}

class Child
{
   public int Id { get; set; }
   public int ParentId { get; set; }

   public virtual Parent Parent { get; set; }
}

class MyContext : DbContext
{
    public DbSet<Parent> Parents { get; set; }
    public DbSet<Child> Children { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Child>().HasRequired(s => s.Parent).WithMany(s => s.Children).HasForeignKey(s => s.ParentId);

        base.OnModelCreating(modelBuilder);
    } …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework

4
推荐指数
1
解决办法
127
查看次数

为什么 HashAlgorithm 类要实现 IDisposable?

在使用时,MD5CryptoServiceProvider我发现它可能需要处理,因为它继承自HashAlgorithm实现IDisposable. 但是,文档中的示例没有处理它。

我的问题是为什么HashAlgorithmclass 实现IDisposable?散列不只是在内存中进行的一些计算吗?什么样的非托管资源可以用于散列?

.net c# hash idisposable

4
推荐指数
1
解决办法
141
查看次数