小编mon*_*nty的帖子

在基类上使用虚拟异步方法是否可以?

我正在使用一些代码,我有2个类,逻辑和代码非常相似.我protected async void LoadDataAsync()在这两个课上都有方法.
目前我正在重构它并考虑将共享逻辑移动到基类.
是否可以virtual async在基类上使用方法并在派生类上覆盖它?
它有什么问题吗?
我的代码看起来像这样:

public class Base
{
   protected virtual async void LoadDataAsync() {}
}

public class Derived : Base
{
   protected override async void LoadDataAsync()
   {
       // awaiting something
   }
}
Run Code Online (Sandbox Code Playgroud)

已经提出类似(但不相同)的问题.

c# asynchronous async-await c#-5.0

43
推荐指数
2
解决办法
2万
查看次数

错误:rxjs/Subject"'没有导出成员'主题'

我有这个代码:

import { Subject } from 'rxjs/Subject';
Run Code Online (Sandbox Code Playgroud)

导入后,我收到错误

rxjs/Subject"没有导出成员'主题'.

我无法解决这个问题.
有人可以提出解决方案吗?

javascript rxjs angular

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

找不到HttpRequestMessage,但引用了System.Net.Http

我有一个新的.Net 4.5.2(检查这是目标框架)Web API应用程序(在VS 2015中).我已经引用了System.Net.Http,你可以看到版本是4.0.0.0:

system.Net.Http参考的属性

在我的过滤器/属性中,我试图引用命名空间中的HttpRequestMessage哪个System.Net.Http(我在文件的顶部有正确的使用),但我得到的消息是

类型'HttpRequestMessage'在未引用的程序集中定义.您必须添加对程序集'System.Net.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用

尝试引用HttpRequestMessage时出错

虽然我不能引用该类,但我可以在Object Exploerer中浏览它(我假设它使用.dll旁边的同名.xml文件).

我试过(编辑:以及通常重启VS和重建等):

  1. 删除并重新添加引用(来自Framework和Extensions - 虽然我确定它的意思是框架版本,但我变得绝望)
  2. 从Nuget安装并在我的本地包文件夹中引用该版本,该文件夹似乎只是默认返回到系统范围的版本.
  3. 使用以下命令重新安装Nuget PM中的所有依赖项: update-package -reinstall -ignoreDependencies
  4. 手动将程序集添加到web.config手动将程序集添加到.csproj文件

[编辑:解决方案:

好的,我创建了一些新的VS Web API项目(和解决方案),看看我是否可以重现这个问题.最后,我创建了一个新的"Filters"文件夹,Filter在那里创建了一个新类,复制了我的简化原文的内容,并且HttpRequestMessage被认可了.同样的事情反过来(我的过滤器最初是在App_Code文件夹中创建的)它仍在工作.我想也许有一个看不见的人提到了一个System.Net.Http在工作中投掷扳手的老人,尽管我可能已经注释掉了调用它的代码,不知何故它被记住了.这只是猜测.但无论如何,把它削减到最近的骨头并从那里开始是导致解决方案的最终方法.

.net c# visual-studio-2015

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

.Net Core 2.1 中的动态代码编译

有没有人设法找到一种解决方法/方法来将一个文件或多个文件或文本动态编译为 .Net Core (2.1) 中的 .dll?

        var csProvider = CodeDomProvider.CreateProvider("CSharp");
        CompilerResults compilerResults = csProvider.CompileAssemblyFromFile(options, files); 
Run Code Online (Sandbox Code Playgroud)

导致 PlatformNotSupportedException 并且似乎 CodeDom 在 .Net Core 中的用途非常有限。查看类似的抱怨并比较.Net Core 2.1.Net Framework 4.7.2中 System.CodeDom.Compiler 的视图。

我们需要能够在现场编写和动态编译自定义代码。我有一种动态加载任何结果 .dll 的方法,但我只需要首先能够获取该 .dll。

目前我能看到的唯一解决方法是创建一个 .Net Framework api/service 来执行此操作。是这里唯一放弃 .Net Core 并转到 .Net Framework 的其他解决方案吗?

注意:我想在代码库中动态执行此操作。因此,“是否可以使用 .net 核心 Roslyn 编译器编译单个 C# 代码文件?”的解决方案 不相关,因为它指出:“要直接调用 Roslyn 编译器,必须使用命令行驱动程序”,这会使我完全走上错误的道路。但是“如何以编程方式使用 Roslyn 编译 C# 文件?” 如果我知道这就是我想要做的,我会提供解决方案。

@Sami Kahmonem 提供的链接到Joel Martinez 在 .Net Core 1 中的解决方案是我用来解决这个问题的。

c# compilation dynamic .net-core

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

当隐藏的 ag-grid 变得可见时,调整列的大小以适合隐藏的 ag-grid

通常我只是使用 gridReady 事件,获取 api 并调用 sizeColumnsToFit()。

export class MyGridApplicationComponent {
    private gridOptions: GridOptions;
    private showGrid2: false;

    constructor() {
        this.gridOptions = <GridOptions>{
          onGridReady: this.gridReady.bind(),
          ....
        };
    }
    gridReady(params) {
      params.api.sizeColumnsToFit();
    }
    ....
Run Code Online (Sandbox Code Playgroud)

但是,我有一个位于隐藏选项卡中的网格,因此当调用 gridReady 事件时,宽度为 0(在控制台中获取消息:“尝试调用 sizeColumnsToFit() 但网格返回时宽度为零,也许网格在屏幕上还不可见?”)。

<h2>Grid only visible after button click</h2>
<button (click)="showGrid2 = true;">Show grid</button><br/><br/>
<div style="width: 100%;" [hidden]="!showGrid2">

    <ag-grid-angular #agGrid2 style="width: 100%; height: 200px;" class="ag-theme-fresh" [gridOptions]="gridOptions">
    </ag-grid-angular>
</div>
Run Code Online (Sandbox Code Playgroud)

当 ag-grid 变得可见时,是否有一个我可以挂钩的事件,以便我可以调整其大小/适合它?我尝试了一些模糊相关的事件(gridSizeChanged、firstDataRendered、columnVisible、columnResized)但无济于事。

在 StackBlitz 中有一个简化的重现

[编辑]我尝试对下面的@antirealm建议进行修改(查看父div上的 *ngIf 是否有所作为),这对我的问题(过度)简化版本有效:请参阅StackBlitz repro

这都是在嵌套选项卡组件的上下文中,其中 ag-grid 不在第一个选项卡上。我尝试在包含嵌套选项卡内容的 div …

ag-grid angular

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