目前我有两个可观察值。一个返回客户端列表,另一个在文本更改时触发。
我想发出客户端的完整结果,然后在用户开始过滤后切换到内部可观察的结果。
我还试图对正在键入的文本进行去抖。
我整理了一些不起作用的东西来尝试解释。目前,它仅在我开始输入文本后才显示客户端。
let obs = Observable.fromPromise(this.clientService.getClients())
.map((clients) => {
return clients.map((c) => new Client().fromObject(c));
});
this.clients = obs.switchMap((values) => {
return this.searchText.valueChanges
.debounceTime(400)
.distinctUntilChanged()
.map((text) => {
return values.filter((c) => c.isMatch(text));
});
});
Run Code Online (Sandbox Code Playgroud) 如果我只访问任务,如何使用反射或任何其他方式创建和返回继续任务?
我需要一种方法让延续中的异常返回原始调用者.据我所知,这只能通过返回继续任务而不是原始任务来完成.问题在于我不知道Task的结果类型,因此无法创建正确的continuation Task.
编辑:我无法更改签名类型.我有许多接口返回Task <TResult>对象,并且不能指望客户端获取Task <Object>结果.这些接口是WCF合同.我希望在"核心"逻辑方法完成后执行一些额外的验证逻辑,并在需要时抛出异常.此异常必须返回到客户端,但它目前不会返回,因为我还没有返回继续任务.另外我事先不知道这个类型,因为我正在应用postharp方面并使用OnExit()覆盖,这使我可以访问一个返回值,我知道这是一个Task但它可以是任意数量的Task对象TResult只在运行时才知道.
using System;
using System.Threading.Tasks;
namespace TaskContinueWith
{
internal class Program
{
private static void Main(string[] args)
{
try
{
Task<string> myTask = Interceptor();
myTask.Wait();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
Console.ReadLine();
}
private static Task<string> Interceptor()
{
Task<string> task = CoreLogic(); //Ignore
Task unknownReturnType = task; //This is what I have access to. A Task object which can be one of numerous Task<TResult> types only known at runtime.
Task continuation = unknownReturnType.ContinueWith(
t …Run Code Online (Sandbox Code Playgroud) 当我在构建服务器上构建解决方案时,它会生成一个二进制文件夹,然后将这些二进制文件复制到最终的输出文件夹.在我的情况下,一些第三方程序集REFERENCES被正确复制,而其他第三方程序集REFERENCES没有被复制.请注意,我的解决方案项目不会直接引用要复制的程序集.
这意味着一切都很好.但是当我运行我的程序时它没有启动,因为它引用的程序集不能反过来加载它们的引用.
构建中的哪个进程确定将哪些程序集复制到二进制文件夹?有没有办法指定它应该复制所有程序集?
编辑:一种可能的解决方案是仅引用解决方案中某个项目中的所有必需程序集,但这会非常混乱.
.net-4.5 ×1
angular ×1
assemblies ×1
asynchronous ×1
c# ×1
msbuild ×1
rxjs ×1
tfs ×1
tfs2010 ×1
tfsbuild ×1