小编el_*_*yan的帖子

[param:NotNull]在C#中的含义是什么?

在Entity Framework的源代码(链接)中,我找到了这一行:

public virtual IRelationalTransaction Transaction 
{ get; [param: NotNull] protected set; }
Run Code Online (Sandbox Code Playgroud)

[param: NotNull]部分对我来说很奇怪.知道这是什么样的C#语法吗?我熟悉属性和参数,但不熟悉这种组合.

NotNull的定义是这样的:

[AttributeUsage(
    AttributeTargets.Method | AttributeTargets.Parameter |
    AttributeTargets.Property | AttributeTargets.Delegate |
    AttributeTargets.Field)]
internal sealed class NotNullAttribute : Attribute
{
}
Run Code Online (Sandbox Code Playgroud)

我希望它被简单地用作[NotNull]param在这里做什么?

c#

57
推荐指数
2
解决办法
5283
查看次数

HttpWebRequest.GetResponse()与GetResponseAsync()中的超时行为

当我尝试以下代码时:

var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout = 3; // a small value

var response = request.GetResponse();
Console.WriteLine(response.ContentLength);
Run Code Online (Sandbox Code Playgroud)

为此,我知道这是要采取超过3毫秒加载URL(我把Thread.Sleep(110000)Application_BeginRequest),它工作正常,并抛出一个WebException预期.

问题是当我切换到异步方法时:

var response = request.GetResponseAsync().Result;
Run Code Online (Sandbox Code Playgroud)

要么

var response = await request.GetResponseAsync();
Run Code Online (Sandbox Code Playgroud)

此异步版本完全忽略任何超时值,包括ReadWriteTimeoutServicePoint.MaxIdleTime

我在MSDN中找不到关于Timeout的任何内容GetResponseAsync()现在我想知道它是否是一个错误GetResponseAsync()或者我在这里使用异步的方式有什么问题?

c# httpwebrequest async-await

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

url中的参数分隔符,误用问号的情况

我真正不懂的是使用'?'的好处 而不是网址中的"&":

问号vs&符号

如果我们使用不同的字符作为第一个分隔符,它会使任何人的生活更轻松.你能想出一个合理的解释吗?

编辑:经过更多的研究,我发现"&"可以是文件名(terms&conditions.html)的一部分,所以"?" 是一个很好的分离器.但我还是觉得用"?" for separators使生活更轻松(从url生成器和解析器的角度来看):

问号作为分隔符

使用"&"是否有任何优势,乍看之下并不清楚?

url http web

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

在WPF/XAML中使用CMYK颜色

有没有办法直接在XAML文档中指定CMYK颜色?

用#字符添加前缀会创建RGB颜色,但如何指定CMYK颜色?

一些说明:

  1. 问题不是关于从CMYK 转换为RGB而是使用真正的CMYK
  2. 目的是允许生成的XPS文档(例如使用System.Windows.Xps.Packaging)将颜色视为CMYK并生成颜色代码为"ContextColor /swopcmykprofile.icc a,b,c,d,e"而不是"# AARRGGBB"

我试图通过使用ColorContext来定义CMYK颜色而没有任何成功.

wpf xaml colors xps cmyk

8
推荐指数
2
解决办法
2709
查看次数

我在哪里需要使用JWT?

除了结构和协议之外,我想知道JWT在哪里适合客户端/服务器通信?

  • 是否可以替换身份验证和会话cookie?
  • 这是为了减轻在数据库或内存中存储会话令牌的服务器吗?
  • 是否让客户确保他们从预期的服务器接收数据,如果这不是一个问题,我不需要JWT?
  • 当连接是HTTPS/SSL时,服务器到服务器通信是必要的还是好的做法?

authentication restful-authentication jwt

8
推荐指数
2
解决办法
3478
查看次数

创建自定义FrameworkContentElement以在WPF中的文本上添加对角线

有没有办法创建一个在其内容上绘制对角线的自定义FrameworkContentElement(或Inline)?

像穿透装饰但具有对角线形状的东西: 透视和对角装饰的例子

它不可能是固有的(TextDecorationTextEffect它们是密封的).

任何的想法?

wpf inline effects decorator custom-controls

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

Google+ SignIn API和电子邮件

我正在尝试使用此代码在ASP.NET中使用Google+登录API:

var flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
   ClientSecrets = secrets,
   Scopes = new string[] { PlusService.Scope.PlusLogin }
});

token = flow.ExchangeCodeForTokenAsync("me", code, "postmessage", CancellationToken.None).Result;

var service = new Oauth2Service(new Google.Apis.Services.BaseClientService.Initializer());
var request = service.Tokeninfo();
request.AccessToken = token.AccessToken;
var info = request.Execute();
// info.Email is null here
Run Code Online (Sandbox Code Playgroud)

如上所述,该Email字段info为空.如果我在Scopes"email"或" https://www.googleapis.com/auth/plus.profile.emails.read "(参考)中添加其他内容,我会收到"invalid_scope"

留给人们:获取API(参考)来获取电子邮件并不是更好:

var credential = new UserCredential(flow, info.UserId, token);
 plusService = new PlusService(new Google.Apis.Services.BaseClientService.Initializer()
 {
     ApplicationName = "Test",
     HttpClientInitializer = credential …
Run Code Online (Sandbox Code Playgroud)

c# google-plus google-api-dotnet-client

6
推荐指数
1
解决办法
2169
查看次数

在sequelizejs中保存/创建时如何设置关联?

对于这样的简单模型:

var User = sequelize.define('User', { email: Sequelize.STRING });
var Team = sequelize.define('Team', { name: Sequelize.STRING });
User.belongsTo(Team);

Team.create({name:'blah'});
Run Code Online (Sandbox Code Playgroud)

如何存储新用户并同时设置其TeamId(同一时间表示一次插入)

这对于必须强制使用REFERENCE(NOT NULL)并且通常user.setTeam(team)在INSERT无法使用后生成UPDATE的情况非常重要。

显然,额外的团队作为属性User.create({ email: 'x', team: team })将被忽略,并且以下内容:

var user = User.build({email:'x'});
user.setTeam(team);
user.save();
Run Code Online (Sandbox Code Playgroud)

生成一个额外的,完全错误的INSERT:

INSERT INTO `Users` (`TeamId`,`updatedAt`,`createdAt`) 
VALUES (4,'2015-08-19 18:10:36','2015-08-19 18:10:36');  
-- has no id or email
Run Code Online (Sandbox Code Playgroud)

sequelize.js

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

加密加速器和.NET

.NET是否检测并使用硬件加密加速器进行加密操作(它检测GPU并将其用于图形操作的方式)?

如果没有,您建议使用哪个托管库?

.net cryptography hardware-acceleration

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

boost :: format和wchar_t

我正在尝试使用boost格式化字符串:

wchar_t *msg;
// fill msg
boost::format("Error: %s") % msg).str()
Run Code Online (Sandbox Code Playgroud)

我得到的不是msg的内容,是以十六进制表示的msg的地址.

这些事情没有成功:

boost::format("Error: %s") % new std::wstring(msg)
boost::format("Error: %1%") % msg
Run Code Online (Sandbox Code Playgroud)

注意:即使我认为它无关紧要,但我填写msg的方式是:

FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | 40, NULL, GetLastError(), MAKELANGID(0, SUBLANG_ENGLISH_US), (LPTSTR) &msg, 512, NULL);
Run Code Online (Sandbox Code Playgroud)

和Visual Studio Watch正确显示msg的内容.

c++ formatting boost wchar-t

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

在嵌套元素中进行拖动操作时,光标发生令人不快的变化

正如您在这个实例中看到的:http://jsfiddle.net/VU328/div.outer当我们每次鼠标经过时div.inner,甚至当它超出可拖动框时(即进入区域内)时,我们都会尝试body拖动主要可拖动元素()) 光标快速变为不允许并立即变回正常移动。

有一个标记来显示嵌套情况:

<div class='outer' draggable='true' >
    <div class='inner' >
        abc
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是允许默认拖动效果的最小 Javascript 代码:

$(document.body).bind('dragover', function(e) {
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

光标移动样机

它至少发生在 Windows 和 Chrome (36.0.1985.125 m) 和 IE (11.0.9600.17207) 中。

是否有任何适用于 html5 本机拖动 API 的“标准”修复?(即不使用某些图像替换光标或div.outer用另一个图像覆盖div或使用 jquery-ui 或类似的库)

html internet-explorer drag-and-drop google-chrome

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