我有一个看起来像这样的文本文件:
{ Id = 1, ParentId = 0, Position = 0, Title = "root" }
{ Id = 2, ParentId = 1, Position = 0, Title = "child 1" }
{ Id = 3, ParentId = 1, Position = 1, Title = "child 2" }
{ Id = 4, ParentId = 1, Position = 2, Title = "child 3" }
{ Id = 5, ParentId = 4, Position = 0, Title = "grandchild 1" }
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种通用的C#算法,它将从中创建一个对象层次结构.如果您愿意,可以使用"层次结构"功能将此数据转换为对象层次结构.
有任何想法吗?
编辑我已经将文件解析为.NET对象:
class …Run Code Online (Sandbox Code Playgroud) 我想上传一个文件并随文件一起发送一些额外的信息,比方说一个字符串foo和一个int栏.
如何编写接收文件上载,字符串和int的ASP.NET WebAPI控制器方法?
我的JavaScript:
var fileInput = document.querySelector("#filePicker");
var formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("foo", "hello world!");
formData.append("bar", 42);
var options = {
url: "/api/foo/upload",
data: formData,
processData: false // Prevents JQuery from transforming the data into a query string
};
$.ajax(options);
Run Code Online (Sandbox Code Playgroud)
我的WebAPI控制器可以像这样访问文件:
public async Task<HttpResponseMessage> Upload()
{
var streamProvider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(streamProvider);
var fileStream = await streamProvider.Contents[0].ReadAsStreamAsync();
}
Run Code Online (Sandbox Code Playgroud)
但我不清楚如何获得我的字符串和我的int.我想我可以说streamProvider.Content [1],或者其他什么,但这感觉非常讨厌.
什么是正确的方法©编写接受文件上传,字符串和int的WebAPI操作?
这是一个看似简单的问题:
在Windows窗体中异步播放嵌入式.wav资源文件的正确方法是什么?
尝试#1:
var player = new SoundPlayer();
player.Stream = Resources.ResourceManager.GetStream("mySound");
player.Play(); // Note that Play is asynchronous
Run Code Online (Sandbox Code Playgroud)
尝试#2:
using (var audioMemory = Resources.ResourceManager.GetStream("mySound"))
{
using (var player = new SoundPlayer(audioMemory))
{
player.Play();
}
}
Run Code Online (Sandbox Code Playgroud)
尝试#3:
using (var audioMemory = Resources.ResourceManager.GetStream("mySound"))
{
using (var player = new SoundPlayer(audioMemory))
{
player.PlaySync();
}
}
Run Code Online (Sandbox Code Playgroud)
尝试#4:
ThreadPool.QueueUserWorkItem(ignoredState =>
{
using (var audioMemory = Resources.ResourceManager.GetStream("mySound"))
{
using (var player = new SoundPlayer(audioMemory))
{
player.PlaySync();
}
}
});
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法从Twitter格式化文本链接超链接,用户名和主题标签?我所拥有的是工作,但我知道这可以做得更好.我对替代技术感兴趣.我将其设置为ASP.NET MVC的HTML Helper.
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;
namespace Acme.Mvc.Extensions
{
public static class MvcExtensions
{
const string ScreenNamePattern = @"@([A-Za-z0-9\-_&;]+)";
const string HashTagPattern = @"#([A-Za-z0-9\-_&;]+)";
const string HyperLinkPattern = @"(http://\S+)\s?";
public static string TweetText(this HtmlHelper helper, string text)
{
return FormatTweetText(text);
}
public static string FormatTweetText(string text)
{
string result = text;
if (result.Contains("http://"))
{
var links = new List<string>();
foreach (Match match in Regex.Matches(result, HyperLinkPattern))
{
var url = match.Groups[1].Value;
if (!links.Contains(url))
{ …Run Code Online (Sandbox Code Playgroud) 我有一个UserControl包含一个按钮和一些其他控件:
<UserControl>
<StackPanel>
<Button x:Name="button" />
...
</StackPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
当我创建该控件的新实例时,我想要获取Button的Command属性:
<my:GreatUserControl TheButton.Command="{Binding SomeCommandHere}">
</my:GreatUserControl>
Run Code Online (Sandbox Code Playgroud)
当然,"TheButton.Command"的东西不起作用.
所以我的问题是:使用XAML,如何在用户控件中设置按钮的.Command属性?
当您尝试删除iPhone的Notes应用程序中的注释时,会弹出一个UIActionSheet.片材是半透明的(但不是黑色半透明).这是如何实现的?是否有可能使UIActionSheet的背景成为某种颜色?
在最新版本的Lucene(或Lucene.NET)中,以排序顺序恢复搜索结果的正确方法是什么?
我有一个这样的文件:
var document = new Lucene.Document();
document.AddField("Text", "foobar");
document.AddField("CreationDate", DateTime.Now.Ticks.ToString()); // store the date as an int
indexWriter.AddDocument(document);
Run Code Online (Sandbox Code Playgroud)
现在我想进行搜索并按照最近的顺序返回我的结果.
如何通过CreationDate进行搜索结果搜索?我看到的所有文档都是针对使用现已弃用的旧版本的Lucene版本.
在我的Java SWT应用程序中,我正在托管第三方ActiveX控件.我正在使用OleClientSite来做到这一点.
// Ah, this works. :-)
OleAutomation comObject = new OleAutomation(...);
Run Code Online (Sandbox Code Playgroud)
我想从Java调用2个简单的函数.以下是COM函数定义:
[id(5)]
void easyFoo([in] int blah);
[id(20)]
void problemFoo([in] VARIANT floatArray);
Run Code Online (Sandbox Code Playgroud)
容易,对吗?这是我的假装代码:
// Ah, this works. :-)
OleAutomation comObject = new OleAutomation("Some3rdPartyControlHere");
// Call easyFoo(42). This works. :-)
int easyFooId = 5;
comObject.invoke(easyFooId, new Variant[] { new Variant(42) });
// Call problemFoo(new float[] { 4.2, 7.0 }). This doesn't work. :-(
int problemFooId = 20;
comObject.invoke(problemFooId, [ACK! What goes here?]);
Run Code Online (Sandbox Code Playgroud)
问题出在最后一行:如何将float数组传递给第三方COM对象?救命!
我有一个.NET Core 2 Web应用程序,我想使用ASP.NET Identity来验证我的用户.在.NET Core 1.x上,我的代码工作正常.
我迁移到.NET Core 2,并在Visual Studio中本地运行时进行身份验证.但是,当我部署到实时环境时,身份验证将停止工作:身份验证cookie未在生产环境中设置.
我的Startup.cs代码如下所示:
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentity<AppUser, RavenDB.IdentityRole>()
.AddDefaultTokenProviders();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseAuthentication();
}
Run Code Online (Sandbox Code Playgroud)
要登录,我的代码如下所示:
public async Task<ActionResult> SignIn(...)
{
var user = ...; // Load the User from the database.
await this.signInManager.SignInAsync(user, isPersistent: true);
...
}
Run Code Online (Sandbox Code Playgroud)
此代码在本地工作:设置了ASP.NET Identity auth cookie.但是,当我将此部署到Azure中的生产环境时,cookie永远不会被设置.
我错过了什么?
c# ×3
asp.net-mvc ×2
activex ×1
algorithm ×1
asp.net ×1
asp.net-core ×1
audio ×1
com-interop ×1
command ×1
data-binding ×1
file-upload ×1
hierarchy ×1
iphone ×1
java ×1
javacard ×1
lucene ×1
lucene.net ×1
ole ×1
sorting ×1
swt ×1
twitter ×1
uikit ×1
unit-testing ×1
winforms ×1
wpf ×1