我使用以下技巧来迭代 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。
是否有一行额外的代码可以插入到返回位置的循环中?
在我的数据库中,我有一个地址表,该表与其他表(例如,客户,员工等)一起用作外键中的主表。
此SQLFiddle显示之间的关系addresses和customers,其中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为什么会出现此错误?有没有解决的办法?
我有一个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对象(基于Field1和Field2)必须在集合中?
我有一个基本控制器与以下抽象方法:
[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
我有这两个实体:
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) 我正在使用最新版本的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?
目前,我将缓存路径设置如下:
CefSettings settings = new CefSettings();
settings.CachePath = mycachePath;
Cef.Initialize(settings);
var browser = new ChromiumWebBrowser(myUrl);
Run Code Online (Sandbox Code Playgroud)
以上作品。
但是,我需要同时使用2个不同的帐户登录一个网站,但是它使用相同的cookie容器。因此,如果我先登录一个帐户,然后再登录另一个帐户,则第一个帐户将被覆盖。
每个浏览器是否可能都有一个缓存路径?
还是有更好的方法来处理这种情况?
我刚刚将我的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项目),则会出现此问题.
我有一个具有以下签名的控制器:
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”才能用作模型绑定器。(参数“值”)
我做错了什么,我该如何解决这个问题?
我有一个 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# ×7
cefsharp ×2
winforms ×2
.net-4.8 ×1
.net-6.0 ×1
angular ×1
asp.net-core ×1
async-await ×1
autofixture ×1
flash ×1
java ×1
moq ×1
restsharp ×1
sql ×1
sql-server ×1
typescript ×1
xunit.net ×1