我有以下代码行,我想从C#移植到F#:
private const string TypeName = nameof(MyClass);
private const string MemberName = nameof(MyClass.MyMember);
Run Code Online (Sandbox Code Playgroud)
的价值TypeName则是"MyClass"和的值MemberName,然后是"MyMember".我需要用F#写什么?
我有一个Base类,它提供了一个带有以下签名的方法:
virtual async Task RunAsync()
Run Code Online (Sandbox Code Playgroud)
派生类应该使用类似的方式覆盖此实现
public override async Task RunAsync()
{
await base.RunAsync();
await this.DoSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)
现在,编译器向我发出警告,指出Base.RunAsync缺少await语句.我希望我的代码是免费警告,而不是抑制警告,并且它运行而不必提供空检查,即使派生类没有提供覆盖实现,因此不能使用virtual Task RunAsync()(省略async关键字).
现在,基本方法中的实现是await Task.Delay(0);解除编译器警告,但在我看来,它在某种程度上并不"干净".应对这个问题的正确方法是什么?
我必须为WinCE 5.0开发一个应用程序,该应用程序与常规PC应用程序通信/同步数据,该应用程序提供了我可以与移动(工业)设备通信的Web服务.
由于很明显导致移动设备端难以维护的代码(检查连接→完成时:检查网络服务可用性→完成时:检查移动设备是否有资格进行同步→完成开始交换数据时)我很想使用awaits 的同步编程方式.
我找到了Daniel Grunwald的一些代码片段,它是编译器为async/await功能所需的东西的最小实现.与.Net 3.5的任务并行库(我必须稍微改变,因为一些被称为不存在需要签名的方法)一起实现了Task类型,它看起来很有希望.
到目前为止,解决方案还没有构建,因为我缺乏实现TaskCompletionSource.我用ILSpy反编译了最近的mscorlib,但代码不可用 - 使用的类型太多,CF中没有.
在这一点上,我想知道这个项目是否一定会失败,因为我永远不会说服VS 2008(我必须在ordner中使用目标智能设备)来使用C#5编译器(可能有一个解决方法?),或者CF缺少TaskCompletionSource的关键类型(我可能会因为我想让事件等待而需要),或者TPL3.5 + Grunwald的片段+ TCS实现将构建但从未真正起作用.
有人可以更有经验请评价我的意图吗?很想听听你的意见,想法和其他方法.谢谢.
更新 Aaron Stainback的帖子表明应该可以用VS2012构建CF 3.5.这应该至少解决编译器问题.
compact-framework windows-mobile windows-ce .net-3.5 async-await
我已经设法通过自动化API打开我的EA项目,但是不知道将参数传递给ImportDirectory(…)方法的正确格式:
var repo = new EA.RepositoryClass();
repo.OpenFile("some.eap");
var proj = repo.GetProjectInterface();
string language = "..."; // what to put here for C#?
string extraoptions = "..."; // what to put here for my option (see below)
proj.ImportDirectory("{C5007706-B7DA-4ACC-9123-F934F9B60305}", language, "C:\somedir", extraoptions);
Run Code Online (Sandbox Code Playgroud)
手动导入时,我在EA的"导入源目录"窗口中选择以下选项:
等效转换为ImportDirectory(…)方法的字符串参数是什么?
我只能找到有关如何结合某些服务器技术(例如 ASP.NET Core)设置 TypeScript 项目的示例。我想使用 Visual Studio,以便能够用 TypeScript 编写客户端代码,然后将其转换为 JavaScript。然而,它只需要是一个静态网站(从服务器的角度来看)。我需要选择或安装什么项目模板?我正在考虑从 ASP.NET Core 项目开始,然后删除我不需要的所有内容,但前提是没有更好的方法。
我使用Visual Studio 2010创建了一个Entity Framework 4模型,并从中生成了一个数据库.现在我发现自己添加了新属性(使用默认值),更改了列的文档,更改了列的名称,多次更改了列的类型.所有不需要太多"额外工作"的任务,以便不能自动实现(以我的拙见).每次我做"从模型生成数据库",当然丢失表数据.
有没有办法只更新数据库的架构,这样说 - 保持表数据不变?也许与某些用户交互,特别是在更改类型等时?或者这种功能是否难以实现以可靠的方式工作?
提前致谢!干杯,大卫
我想通过实现扩展方法使数组等待
public static IAwaitable GetAwaiter(this mytype[] t)
{
return t.First().GetAwaiter();
}
Run Code Online (Sandbox Code Playgroud)
但即使IntelliSense说"(等待)mytype[]",编译器在使用时也会出错
mytype[] t = new mytype[] { new mytype(), new mytype() };
await t;
Run Code Online (Sandbox Code Playgroud)
对mytype的单个对象进行调用等待正常.这是为什么?难道我做错了什么?谢谢你的帮助.
是否有可能像下面的代码片段一样,以解构的方式直接在lambda表达式的参数列表中访问元组的元素?
Func<(int A, int B), int> f = ((a, b)) => a + b;
Run Code Online (Sandbox Code Playgroud)
起作用的是分解体内的元组:
Func<(int, int), int> f = i => i.Item1 + i.Item2;
Run Code Online (Sandbox Code Playgroud) Blazor可用于创建客户端C#脚本编写的网页。我已经在各个地方(例如MSDN Magazine文章)阅读过文章,这些地方一旦建立,便可以将文件放在任何服务器上。我的理解是,也可以将工件放置在文件共享上。
但是,这不是我观察到的。dotnet run通过在Visual Studio中通过模板创建的Blazor Web应用程序的项目目录中运行,可使红k Web服务器启动,并且我可以通过指定的http://localhost:port/地址访问工作的网页。
当我index.html在的WebApplication1\bin\Debug\netstandard2.0\publish\WebApplication1\dist帮助下打开在路径下生成的时,dotnet publish我在Web浏览器中仅看到一个文字“ Loading ...”。
我已经看过了index.html,乍一看,它看起来像是_framework/blazor.webassembly.js匹配目录结构的路径。渔获物在哪里?
c# ×5
async-await ×3
.net-3.5 ×1
blazor ×1
f# ×1
static-site ×1
tfs ×1
tfs2017 ×1
typescript ×1
windows-ce ×1