我有一个ContextMenuStrip控件,允许你执行一个动作是两种不同的风格:Sync和Async.
我试图用泛型覆盖所有内容所以我这样做:
public class BaseContextMenu<T> : IContextMenu
{
private T executor;
public void Exec(Action<T> action)
{
action.Invoke(this.executor);
}
public void ExecAsync(Action<T> asyncAction)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
我如何编写异步方法以执行通用操作并同时使用菜单"执行某些操作"?我看到签名BeginInvoke是这样的:
asyncAction.BeginInvoke(this.executor, IAsyncCallback, object);
Run Code Online (Sandbox Code Playgroud) 我Node在 C# 中有一个具有以下属性的类:
public class Node
{
public int Id {get;set;}
public int? ParentId {get;set;}
public string Label {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我有一个TreeView控件,它提供以下方法来创建新节点:
MyTreeView.CreateNode(key, label);
parent.Nodes.CreateNode(key, label);
Run Code Online (Sandbox Code Playgroud)
如果我想添加一个新的子节点,我需要使用第二种方法,否则使用第一种方法。两者都返回一个类型为 的对象TreeNode。
考虑到根节点具有 ,您将如何在 C# 中创建一个递归函数来填充树视图ParentId = null?
这是我到目前为止所做的:
// create a list of root nodes
var roots = myList.Where(x => x.ParentId == null);
// send the roots to a recursive func
foreach(var root in roots)
{
AddNode(null,root,myList);
}
Run Code Online (Sandbox Code Playgroud)
这是我的递归函数:
private void AddNode(Node parent, Node current, IList<Node> …Run Code Online (Sandbox Code Playgroud) 我试图在dos中运行此命令
FORFILES with params /P C:\Builds\ /M *.chm /S /C "cmd /c copy @file C:\My Brand\"
Run Code Online (Sandbox Code Playgroud)
它爆炸,因为目标文件夹路径中有一个空格.如何传递由""分隔的源和目标路径?我尝试添加一个额外的双引号,我得到"命令不被识别"
我有一个OWIN中间件用于身份验证.我们有两种类型的身份验证.第一种类型是使用以下配置的承载令牌
var OAuthOptions = new OAuthAuthorizationServerOptions
{
AuthenticationType = DefaultAuthenticationTypes.ExternalBearer,
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true,
AccessTokenFormat = new SecureTokenFormatter(GetMachineKey())
};
Run Code Online (Sandbox Code Playgroud)
第二种类型使用身份验证cookie进行外部登录
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive,
CookieHttpOnly = true,
CookieSecure = CookieSecureOption.SameAsRequest,
CookieName = ".AspNet." + DefaultAuthenticationTypes.ExternalCookie,
ExpireTimeSpan = TimeSpan.FromMinutes(5),
TicketDataFormat = new SecureTokenFormatter(GetMachineKey())
});
Run Code Online (Sandbox Code Playgroud)
当用户注销时,我们实际发出了两个Logout
Request.GetOwinContext().Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
Run Code Online (Sandbox Code Playgroud)
和
Request.GetOwinContext().Authentication.SignOut(DefaultAuthenticationTypes.ExternalBearer);
Run Code Online (Sandbox Code Playgroud)
对于第一个,我希望看到从浏览器中删除.AspNet.ExternalCookie Cookie,但事实并非如此.对于第二个,我希望我的令牌失效,而User.Current.Identity = null,这不是.
那么我怎么能1)以物理方式注销当前会话的当前身份?2)从浏览器中删除外部Cookie?
嗨,我正在开发一个Android项目,我从图形设计器获得以下信息:

设计是针对Android hdpi屏幕完成的,该屏幕应该是基于Android SDK文档的960 x 540 px(640 x 360 dp)/ hdpi/Normal屏幕.在Android工作室内我试图复制布局,但我很难从这个模拟开始计算DP.我应该遵循哪些好的教程?我尝试使用Nexus 5,但是当我切换到Nexus 6时,布局完全不同,我在我的XML中使用dp.
我正在浏览android的图标大小指南,如果我在GitHub上为每个图标下载他们的图标集,我可以找到如下正确的文件夹:
任何人都可以指向我正确的资源,以便我可以正确导入相对dp大小的图标?
我们已经实现了ASP.NET MVC网站的本地化版本,其网址结构如下:
网址:// {语言} - {文化}/{控制器}/{行动}/{ID}
通过这种方式,我们可以按语言生成URL,这些URL由Google bot正确抓取:
翻译在两个地方实现.首先,我们使用以下方法修改了MVC的默认路由:
routes.MapRoute(
name: "Default",
url: "{language}-{culture}/{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
language = "en",
culture = "US"
}
);
Run Code Online (Sandbox Code Playgroud)
然后我们创建了一个动作过滤器,它切换到URL中可用的当前语言,如果不可用于默认值:
public class LocalizationAttribute : ActionFilterAttribute
{ public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string language = (string)filterContext.RouteData.Values["language"] ?? "en";
string culture = (string)filterContext.RouteData.Values["culture"] ?? "US";
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果用户输入http:// …
我正在使用 MassTransit 和 RabbitMQ 创建一个简单的发布者/订阅者。发布者有以下代码来初始化总线:
/** create the bus */
var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(new Uri("rabbitmq://localhost/"), h =>
{
h.Username("guest");
h.Password("guest");
});
});
/** start the bus and publish */
bus.Start();
bus.Publish<IPersonLogin>(new {FirstName = "John", LastName = "Smith"});
Run Code Online (Sandbox Code Playgroud)
订阅者有这个初始化代码:
var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(new Uri("rabbitmq://localhost/"), h =>
{
h.Username("guest");
h.Password("guest");
});
cfg.ReceiveEndpoint(host, "person_login", e =>
{
e.Consumer<PersonLoginConsumer>();
});
});
Run Code Online (Sandbox Code Playgroud)
如果我关闭订阅者并发布 2 条消息,则消息不会丢失,一旦订阅者恢复生机,消息就会得到处理。
所以我的问题是:
我有一个字符串,具有以下格式:
string sample = "A, ABC, 1, ACS,,"
Run Code Online (Sandbox Code Playgroud)
如您所见,该,角色有5个出现.我需要在第4次发生后删除所有内容,以便最终结果为:
string result = fx(sample, 4);
"A, ABC, 1, ACS"
Run Code Online (Sandbox Code Playgroud)
没有一个可能foreach吗?提前致谢.
我们正在 Windows 环境中使用 RabbitMQ。目前我已经安装了 RabbitMQ 并且它作为服务运行。它会自动启动,如下所示:
但是如果我发送消息或者我在这里查询服务器:http://localhost:15672/#/queues服务器返回404
现在,如果我打开 Shell 并点击以下命令:
rabbitmq-server
Run Code Online (Sandbox Code Playgroud)
服务器启动后,我可以发送和接收消息并浏览管理页面。
问题:
c# ×6
android ×2
rabbitmq ×2
asp.net ×1
asp.net-mvc ×1
asynchronous ×1
batch-file ×1
dpi ×1
linq ×1
masstransit ×1
owin ×1
recursion ×1
regex ×1
string ×1