小编Gre*_*reg的帖子

是否可以在无头 Windows 容器中运行 GUI 应用程序?

这个问题与Is it possible to run GUI apps in windows cats?相似但不同。通过以下方式:我不想登录并查看 GUI。相反,我想知道是否可以从 Windows 容器内的命令行启动 winforms 或 wpf 应用程序。如果它运行的话,窗口/屏幕对 GUI 应用程序有什么影响?

也许我有一个 GUI 应用程序,当用户单击按钮时,它开始侦听端口。也许我想以自动化的方式测试这个应用程序,既使用触发 GUI 按钮单击的脚本(也在容器中运行),又使用创建并运行包含 GUI 应用程序和按钮点击器的容器的脚本。

windows containers docker docker-for-windows

6
推荐指数
0
解决办法
906
查看次数

如何在Json.NET中将缺少的属性反序列化为默认值?

我有一个用DataContract和DataMember属性注释的类.有些成员被标记为DataMember(IsRequired = true).当我从Json.NET通过线路序列化实例,并且所需的对象成员具有null值时,它们的序列化值在输出中丢失(这显然相当于在JSON中为null).我没关系.

我创建了一种"echo"服务,它返回作为响应发送给它的数据.因此,此服务接收具有缺少成员的JSON(或根据您的查看方式为null成员),然后将其发送回我的Json.NET客户端.通过Fiddler(代理嗅探器)查看,线路上的JSON在两个方向上看起来都是一样的.到现在为止还挺好.

当原始Json.NET发送方收到JSON响应以反序列化它时,序列化程序抛出一个关于在JSON有效负载中找不到所需成员的异常:

Required property 'IAmRequired' not found in JSON. Path ''.
Run Code Online (Sandbox Code Playgroud)

这是不幸的,因为序列化程序因此无法反序列化它之前已经序列化的数据而没有问题.

如果没有更改DataContract类以使成员不需要(由于多种原因我不想这样做),有没有办法让Json.NET将缺少的成员反序列化为默认值,例如null?

这是我的反序列化代码:

HasRequired h = null;
JObject json = response as JObject; // hand waving here
try
{
    JsonSerializer ser = new JsonSerializer();
    ser.MissingMemberHandling = MissingMemberHandling.Ignore; // doesn't seem to help
    ser.DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate; // doesn't seem to help
    ser.NullValueHandling = NullValueHandling.Include; // doesn't seem to help
    h = json.ToObject<HasRequired>(ser);
}
catch (Exception ex)
{
    // bummer, missing required members still
}
Run Code Online (Sandbox Code Playgroud)

json.net

5
推荐指数
2
解决办法
3295
查看次数

ConnectionMultiplexer.GetEndPoints()中使用的是"configuredOnly"是什么?

我正在使用神奇的StackExchange.Redis库来实现ObjectCache.在ObjectCache中实现的接口方法之一是long GetCount(...)返回数据库中的键数.看起来这可以通过IServer.DatabaseSize(...)StackExchange.Redis中的方法来满足.

我计划从中获取服务器端点ConnectionMultiplexer.GetEndPoints(),为每个端点获取一个IServer,然后在每个服务器上查询我感兴趣的每个数据库的数据库大小(暂时忽略大小差异).

现在,ConnectionMultiplexer.GetEndPoints()有一个名为"configuredOnly"的可选参数.没有提供它的结果是什么,而不是真实的,而不是虚假的?

ConnectionMultiplexer.GetEndPoints() 实现中,我看到如果configuredOnly为true,它将从多路复用器配置返回EndPoints,或者从名为"serverSnapshot"的数组返回EndPoints.

据我所知,这里填充 "serverSnapshot" ,这似乎是在连接服务器时填充的,或者至少是尝试连接的.

是否GetEndPoints(true)返回在ConnectionMultiplexer上配置的所有EndPoints?是否GetEndPoints()GetEndPoints(false)返回实际连接/有效终点?GetEndPoints方法相对于configuredOnly参数的文档是稀疏的,我后续使用返回的EndPoints需要一个行为而不是另一个行为.

stackexchange.redis

5
推荐指数
1
解决办法
437
查看次数