说我有一个对象:
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.
为什么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) 我正在尝试更多地了解它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) 我有这个简单的模型:
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) 在使用时,MD5CryptoServiceProvider我发现它可能需要处理,因为它继承自HashAlgorithm实现IDisposable. 但是,文档中的示例没有处理它。
我的问题是为什么HashAlgorithmclass 实现IDisposable?散列不只是在内存中进行的一些计算吗?什么样的非托管资源可以用于散列?
c# ×4
.net ×1
async-await ×1
c#-7.0 ×1
cil ×1
gson ×1
hash ×1
idisposable ×1
java ×1
lambda ×1