小编aoc*_*via的帖子

将JSON反序列化为抽象类

我试图将JSON字符串反序列化为具体类,该类继承自抽象类,但我无法使其工作.我用Google搜索并尝试了一些解决方案,但它们似乎也没有用.

这就是我现在拥有的:

abstract class AbstractClass { }

class ConcreteClass { }

public AbstractClass Decode(string jsonString)
{
    JsonSerializerSettings jss = new JsonSerializerSettings();
    jss.TypeNameHandling = TypeNameHandling.All;
    return (AbstractClass)JsonConvert.DeserializeObject(jsonString, null, jss);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试转换生成的对象,它就不起作用.

我不使用DeserializeObject的原因是我有很多具体的类.

有什么建议?

  • 我正在使用Newtonsoft.Json

c# serialization json json.net

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

从函数返回闭包

注意:这个问题是在Rust第一次稳定发布之前提出的.之后发生了很多变化,函数中使用的语法甚至不再有效.尽管如此,Shepmaster的答案仍然非常出色,这使得这个问题值得保留.


最后,未装箱的封闭装置着陆了,所以我正在试验它们,看看你能做些什么.

我有这个简单的功能:

fn make_adder(a: int, b: int) -> || -> int {
    || a + b
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到了一个missing lifetime specifier [E0106]错误.我试图通过将返回类型更改为修复此问题||: 'static -> int,但后来又出现了另一个错误cannot infer an appropriate lifetime due to conflicting requirements.

如果我理解正确,关闭是未装箱的,所以它拥有ab.我觉得它需要一辈子似乎很奇怪.我怎样才能解决这个问题?

rust

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

处理缓慢的 Electron 启动

语境

我花了几个小时玩 Electron,我观察到在屏幕上绘制一个简单的 html 文件总是需要超过 2.5 秒。时间线大致如下:

  • 60 ms:appready事件被触发;我们创建一个窗口使用new BrowserWindow()
  • 170 ms:屏幕上出现一个空白窗口
  • 2800 ms:窗口显示指定的 HTML

我已经使用我的代码建立了一个存储库,该代码源自 Electron 的快速入门文档。

关于我的机器,我在 2016 年的 ThinkPad T460 上运行 Windows 10,带有 SSD 和足够的内存。

问题

发送一个在启动时显示空白窗口的应用程序对我来说是行不通的。我假设大多数开发 Electron 应用程序的人都有类似的想法。因此我的第一个问题是:我做错了什么吗?或者这是一个简单的 Electron 应用程序的预期加载时间?

假设这是正常行为,处理此问题的常用方法是什么?想到了一些想法:

  1. 要求 Electron 显示启动画面:除非有特定的内置功能,否则这似乎是不行的,因为启动画面本身只会在 2.5 秒后显示。
  2. 隐藏应用程序的窗口,直到它被渲染(使用ready-to-show事件),所以不会显示空白窗口。这并不理想,因为这意味着用户不会得到任何关于应用程序实际加载的反馈。
  3. 创建一个包装应用程序(使用本机代码),显示启动画面,启动电子并在显示电子窗口后隐藏自身。有点违背了使用 Electron 的初衷,因为您最终会编写本机代码并意外增加复杂性。
  4. 按照docs 的建议,将窗口的背景颜色设置为类似于您的应用程序的颜色。这看起来不太好。

鉴于这一定是一个普遍的问题,我希望社区已经找到了标准的解决方案。如果有人能指出我正确的方向,我会很高兴。

javascript performance desktop-application node.js electron

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

@ ngrx/store结合了功能模块中的多个reducer

我目前正在开发一个简单的测试应用程序,以了解有关@ ngrx/store的更多信息.我有一个名为TrainingModule的模块,它应该存储一些练习和更多信息.代码有效,但我试着在这里改进.我目前拥有的是我的功能模块,如下所示:

@NgModule({
  imports: [
    CommonModule,
    TrainingRoutingModule,
    StoreModule.forFeature('exercises', exerciseReducer)
  ],
  declarations: [
    TrainingDashboardComponent,
    TrainingCoreComponent,
    TrainingNavComponent,
    TrainingPlanComponent,
    ExerciseOverviewComponent,
    ExerciseListComponent]
})
export class TrainingModule {
}
Run Code Online (Sandbox Code Playgroud)

和我的减速机看起来像那样:

export interface ExerciseState {
  exercises: IExercise[];
}

export interface State extends fromRoot.State {
  'exercises': ExerciseState;
}

export const initialState: ExerciseState = {
  exercises: [
    {id: 1, name: 'Exc 1'},
    {id: 2, name: 'Exc 2'}
  ]
};

export function exerciseReducer(state: ExerciseState = initialState, action: any): ExerciseState {
  switch (action.type) {
    default:
      return state;
  }
}

export …
Run Code Online (Sandbox Code Playgroud)

ngrx angular ngrx-store-4.0

10
推荐指数
1
解决办法
8862
查看次数

在需要身份验证的控制器上运行单元测试

我有一个spring boot应用程序,需要登录才能执行某些操作.我正在尝试使用它们进行测试MockMvc,但它似乎不起作用.我一直收到状态为403(禁止)的HTTP响应.可能是认证部分出了问题.

我试过按照文档,但我无法使它工作.

这是我目前的测试代码:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {Application.class})
@WebIntegrationTest("server.port = 8093")
public class PasswordChangeTests {
    @Autowired
    private EmbeddedWebApplicationContext webApplicationContext;

    @Autowired
    private UserRepository userRepository;

    private MockMvc mockMvc;

    @Before
    public void setUp() throws Exception {
        this.mockMvc = MockMvcBuilders
                .webAppContextSetup(webApplicationContext)
                .apply(springSecurity())
                .build();
    }

     @Test
     public void changePasswordWorks() throws Exception {
         // Send password change request
         PasswordChangeRepresentation passwordChange = new PasswordChangeRepresentation(DefaultUsers.Admin.getPassword(), "12345678");
         mockMvc.perform(MockMvcRequestBuilders.request(HttpMethod.POST, "/password/change")
                 .content(new ObjectMapper().writeValueAsString(passwordChange))
                 .contentType(MediaType.APPLICATION_JSON)
                 .accept(MediaType.APPLICATION_JSON))
                 .andExpect(status().isOk());

         // Check that the password has been changed
         User user = …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc spring-security spring-boot mockmvc

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

生成后将文件复制到目标目录

我们假设我有一个具有以下目录结构的游戏:

/src
/resources
Cargo.toml
Run Code Online (Sandbox Code Playgroud)

我想cargo build复制resources目录中的文件并将它们粘贴到与可执行文件相同的目录中.

我知道可以使用自定义构建脚本来执行此操作,但这似乎是一个值得特殊处理的常见情况.所以问题是:货物是否提供了将文件复制到目标目录的标准方法(仅使用Cargo.toml)?

rust rust-cargo

9
推荐指数
2
解决办法
3439
查看次数

.NETCore 中的 OverrideAuthorization 属性

在下面的控制器代码中,GetData()由于控制器级别的原因,只有处于“管理员”角色的用户才能访问操作方法AuthorizeAttribute。但我也希望只有“经理”角色的用户能够访问GetData()操作方法。

[Authorize(Roles = "Administrator")]
Public class AdminController : Controller
{
    [Authorize(Roles = "Administrator, Manager")]
    public IActionResult GetData()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

.NET Core 框架中是否有类似 OverrideAuthorization 属性的选项来实现此要求?

c# asp.net-core-mvc .net-core asp.net-core-2.0

9
推荐指数
2
解决办法
3173
查看次数

Windows Defender 减慢 Electron 的启动速度

语境

我已经设置了一个简单的 Electron 应用程序,它显示了一个纯 html 文件,并且它始终需要超过两秒钟才能启动。关键的性能测量是:

  • 170 ms:屏幕上出现一个空白窗口
  • 2800 ms:窗口显示指定的 HTML

经过询问,我发现问题是由 Windows Defender 引起的。禁用其实时保护可以获得可接受的启动速度:

  • 150 ms:屏幕上出现一个空白窗口
  • 500 ms:窗口显示指定的 HTML

虽然这种加速完全解决了问题,但要求用户禁用 Windows Defender 以加快启动速度是行不通的。

我观察到一些流行的 Electron 应用程序(例如 Visual Studio Code)具有正常的启动时间,因此我认为有一种方法可以在不禁用 Windows Defender 的情况下实现这一目标。问题是:如何?

我唯一想到的是签署电子二进制文件,希望它能解决问题。但是由于签名证书要花钱,所以我宁愿在走这条路之前确定我需要它。如果有这方面经验的人能插话就太好了!

要求

我正在寻找一种不需要告诉我的用户修改他们的环境的解决方案。

javascript windows performance electron windows-defender

7
推荐指数
1
解决办法
246
查看次数

如何用惯用语写这个函数?

我正在寻找一个函数来测试列表元素的谓词,为每个满足谓词的元素创建一个新列表,并仅将函数应用于该元素.

例:

someFunction :: (a -> Bool) -> (a -> a) -> [a] -> [[a]]
someFunction = ...

let ys = someFunction isOdd (* 2) [1..10]
    {- ys == [[2, 2, 3, 4, 5,  ...],
              [1, 2, 6, 4, 5,  ...],
              [1, 2, 3, 4, 10, ...],
              ...] -}
Run Code Online (Sandbox Code Playgroud)

ys,第一个列表等于原始列表,除了第一个元素,它满足谓词并乘以2.除了第三个元素之外,第二个列表也等于原始列表,依此类推.

我已经能够通过获取满足谓词的值的索引然后通过索引进行映射来编写这样的函数.然而,这似乎不是很实用,我希望看到一个更惯用的方法.

haskell functional-programming filtering list higher-order-functions

5
推荐指数
3
解决办法
340
查看次数

在Azure搜索服务中点击突出显示

我是Azure Search Service的新手,我想使用Azure Search Service的热门突出显示功能.我使用.NET SDK NuGet包进行azure搜索.
我使用SearchParameter对象来提及命中突出显示字段以及我需要的前后标记.

searchParameters.HighlightFields = new[] { "Description"};
searchParameters.HighlightPreTag = "<b>";
searchParameters.HighlightPostTag = "</b>";
_searchIndexClient.Documents.Search(searchText, searchParameters);
Run Code Online (Sandbox Code Playgroud)

我期待这样的事情:
SearchText:最好的
结果(描述):最好的产品
问题是我没有看到使用/不使用点击突出显示的结果有任何差异.(描述字段是可搜索的)
我错过了什么?

c# azure hit-highlighting azure-cognitive-search

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