小编Iva*_*ono的帖子

获取整数中设置位的位置

我使用以下技巧来迭代 int 的位集:

    while (b != 0)
    {
        c = b & (0 - b);
        //Do something...
        b = b ^ c;
    }
Run Code Online (Sandbox Code Playgroud)

以数字 4128(二进制 0001000000100000)为例,这可以正常工作,因为 c 的值为 32 和 4096。

然而,我想要这些值的位置,而不是实际值,即 5 和 12。

是否有一行额外的代码可以插入到返回位置的循环中?

java bit-manipulation

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

SQL Server ON DELETE SET NULL错误

在我的数据库中,我有一个地址表,该表与其他表(例如,客户,员工等)一起用作外键中的主表。

SQLFiddle显示之间的关系addressescustomers,其中customers具有2个地址。

目前FK设置为ON DELETE NO ACTION,我开始将它们更改为ON DELETE SET NULL

对于大多数只有一个地址列的表来说,这已经很好用了。在一个只有一个地址列的特定表上,以及在有多个地址列的所有表上,我得到了错误:

消息1785,级别16,状态1,第1
行在表“客户”上引入外键约束“ FK_customers_shipping_address”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。

消息1750,级别16,状态1,行1
无法创建约束。请参阅先前的错误。

如果我不使用,CASCADE为什么会出现此错误?有没有解决的办法?

sql sql-server sql-server-2014

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

FluentValidation 检查子集合中的重复实体

我有一个MainEntity班级,它有一个SubEntity. 以下是当前的验证:

public class MainEntityValidator : AbstractValidator<MainEntity>
{
    public MainEntityValidator()
    {
        RuleFor(x => x.SubEntities).SetCollectionValidator(new SubEntityValidator());
    }

    public class SubEntityValidator : AbstractValidator<SubEntity>
    {
        public SubEntityValidator()
        {
            RuleFor(x => x.Field1).NotNull();
            RuleFor(x => x.Field2).NotNull();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何添加验证规则,以便只有唯一SubEntity对象(基于Field1Field2)必须在集合中?

c# fluentvalidation

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

忽略异步而不等待编译警告

我有一个基本控制器与以下抽象方法:

[HttpDelete]
public abstract Task<IHttpActionResult> Delete(int id);
Run Code Online (Sandbox Code Playgroud)

在一个特定的控制器中,我不想实现删除,因此该方法如下所示:

public override async Task<IHttpActionResult> Delete(int id)
{
    return ResponseMessage(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, new NotSupportedException()));
}
Run Code Online (Sandbox Code Playgroud)

虽然上面的代码编译,但我收到警告:

这种异步方法缺少"等待"运算符并将同步运行.考虑使用'await'运算符等待非阻塞API调用,或'await Task.Run(...)'在后台线程上执行CPU绑定工作.

除了忽略上述警告之外,是否有更好的替代方案(即更改上面的代码)以便不会发生此警告?

编辑

我将行更改为:

return await Task.Run(() => ResponseMessage(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, new NotSupportedException())));
Run Code Online (Sandbox Code Playgroud)

这会删除警告.但是,有更好的解决方案吗?

c# task-parallel-library async-await asp.net-web-api visual-studio-2012

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

使用属性上的sum验证集合

我有这两个实体:

public class Parent
{
    public ICollection<Child> Children {get; set;}
}

public class Child
{
    public decimal Percentage {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我想添加验证规则,以便Percentage所有子项的总数为100.如何在以下验证器中添加此规则?

public ParentValidator()
{
    RuleFor(x => x.Children).SetCollectionValidator(new ChildValidator());
}

private class ChildValidator : AbstractValidator<Child>
{
    public ChildValidator()
    {
        RuleFor(x => x.Percentage).GreaterThan(0));
    }
}
Run Code Online (Sandbox Code Playgroud)

c# fluentvalidation

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

如何用CefSharp启用Adobe Flash?

我正在使用最新版本的CefSharp,我需要显示Flash.使用Chrome时,页面会正确显示.但是,当使用CefSharp时它不会.

到目前为止我试过:

        var browser = new ChromiumWebBrowser(URL)
        {
            BrowserSettings = new BrowserSettings() {
                Java = CefState.Enabled,
                Plugins = CefState.Enabled,
            },
            Dock = DockStyle.Fill
        };
Run Code Online (Sandbox Code Playgroud)

当我加载时,about:plugins我得到:

CEF 3.2357.1287.g861c26e

铬43.0.2357.130

操作系统Windows

WebKit 537.36

JavaScript 4.3.61.30

用户代理Mozilla/5.0(Windows NT 6.2; Win64; x64)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/43.0.2357.130 Safari/537.36

如何在CefSharp中启用Flash?

c# flash winforms cefsharp

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

每个浏览器有单独的缓存?

目前,我将缓存路径设置如下:

CefSettings settings = new CefSettings();
settings.CachePath = mycachePath;

Cef.Initialize(settings);

var browser = new ChromiumWebBrowser(myUrl);
Run Code Online (Sandbox Code Playgroud)

以上作品。

但是,我需要同时使用2个不同的帐户登录一个网站,但是它使用相同的cookie容器。因此,如果我先登录一个帐户,然后再登录另一个帐户,则第一个帐户将被覆盖。

每个浏览器是否可能都有一个缓存路径?

还是有更好的方法来处理这种情况?

c# visual-studio-2012 chromium-embedded cefsharp

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

升级到Angular 6后构建失败

我刚刚将我的Angular 5项目升级到6.并且构建失败了:

node_modules/@ng-bootstrap/ng-bootstrap/datepicker/datepicker-service.d.ts(5,10)中的错误:错误TS2305:模块'"C:/ myapp/node_modules/rxjs/Observable"'没有导出成员'Observable'.node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead.d.ts(3,10):错误TS2305:模块'"C:/ myapp/node_modules/rxjs/Observable"'没有导出的成员'Observable'.node_modules/rxjs/Observable.d.ts(1,15):错误TS2307:找不到模块'rxjs-compat/Observable'.

关于如何解决这个问题的任何想法?

注意:

如果添加ng-bootstrap到项目(甚至是新的Angular 6项目),则会出现此问题.

twitter-bootstrap typescript angular

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

对抛出异常的控制器进行单元测试

我有一个具有以下签名的控制器:

public CustomerTypeController(
    IHttpContextAccessor accessor,
    IPrincipalProvider provider,
    IMapper mapper, 
    ILogger<CustomerTypeController> logger,
    ICustomerTypeService customerTypeService)
{ }
Run Code Online (Sandbox Code Playgroud)

现在我的Theory样子是这样的:

[Theory, AutoMoqData]
public void GetWhenHasCustomerTypesShouldReturnOneCustomerType(
    IFixture fixture,
    [Frozen] Mock<ICustomerTypeService> service,
    CustomerTypeController sut)
{
    //Arrange
    var items = fixture.CreateMany<Model.CustomerType>(3).ToList();

    //Act
    var result = sut.Get(1);

    //Assert
    Assert.IsType<OkResult>(result);
}
Run Code Online (Sandbox Code Playgroud)

当我按原样运行此测试时,出现以下异常:

AutoFixture.ObjectCreationExceptionWithPath : AutoFixture 无法从 Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo 创建实例,因为创建意外失败并出现异常。请参考内部异常来排查失败的根本原因。

内部异常消息:System.Reflection.TargetInitationException:调用目标已引发异常。System.ArgumentException:类型“System.Object”必须实现“Microsoft.AspNetCore.Mvc.ModelBinding.IModelBinder”才能用作模型绑定器。(参数“值”)

我做错了什么,我该如何解决这个问题?

c# moq xunit.net autofixture asp.net-core

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

未找到 System.Text.Json,即使它是项目的一部分

我有一个 Winforms 项目,并且安装了最新NET6版本(当前为 6.0.4)。

我正在使用RestSharp,当我创建时,RestClient我得到以下异常:

未找到文件或程序集“System.Text.Json,Version=5.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”。

RestSharp nuget 包依赖项显示:

在此输入图像描述

App.config也有以下绑定:

<dependentAssembly>
    <assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.4" newVersion="6.0.0.4" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

我也尝试使用此处Newtonsoft.Json解释的替代方法,但我得到了上面相同的异常。

有什么办法解决这个问题吗?

c# winforms restsharp .net-4.8 .net-6.0

5
推荐指数
0
解决办法
2685
查看次数