小编Ans*_*hul的帖子

如何在设置或获取之前拦截FormControl的值?

这个问题非常明显.我想拦截FormControl的value属性的传入值,并能够截取它连接到的HTML控件的传出值.

假设我有一个名为"firstName"的FormControl,我把它连接到一个文本框,如下所示:

<input type="text" formControlName="firstName" />
Run Code Online (Sandbox Code Playgroud)

默认情况下,当用户在文本框中输入值并提交时,FormControl的值将设置为文本框中的值.有没有什么方法可以拦截设置的值并在设置之前修改它?

同样,有没有办法拦截FormControl发送到HTML控件的值?例如,如果我将FormControl的值设置为某些内容,但我想修改文本框中显示的值.

我知道我可以使用ngModel充当表单和控件之间的中介,但是当使用多个控件时,这会变得很麻烦.我也知道你可以创建自己的控件并实现ControlValueAccessor,但这也很麻烦,因为我必须为我想要使用的每个控件创建一个相应的控件.

有关我提出此问题的原因的详细信息,请参阅https://github.com/ionic-team/ionic/issues/7121

ionic-framework ionic2 angular2-forms angular angular-reactive-forms

10
推荐指数
2
解决办法
1793
查看次数

Git错误"非单调索引"

我的git设置有一个我推送的中央存储库.今天我决定查看中央存储库使用Git Extensions,它说repo没有提交(几乎就像回购从未创建过).调查这个问题,我试图克隆回购,它给了我一些我从未见过的奇怪错误:

error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic …
Run Code Online (Sandbox Code Playgroud)

git git-extensions

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

NUnit - 加载所有TestCaseSources,即使当前测试不需要它们

我最近开始使用NUnit为我的项目进行集成测试.这是一个很棒的工具,但我发现了一个我无法得到答案的缺点.我的所有集成测试都使用TestCaseSource属性,并为每个测试指定测试用例源名称.现在的问题是准备这些测试用例源需要相当长的时间(约1分钟).如果我正在运行单个测试,NUnit总是加载每个测试用例源,即使它不是测试的测试用例源我正在跑步.

是否可以更改此行为,以便只运行测试的测试用例源?我想避免在每次创建新测试时创建新的程序集(看起来相当多余和繁琐,更不用说,难以维护),因为我已经读过不同程序集中的测试是单独加载的,但我不知道了解测试用例来源.值得一提的是,我正在使用Resharper作为测试运行器.

TL; DR:需要告诉NUnit只加载当前会话中运行的测试所需的TestCaseSource.当前行为是为所有运行的测试加载所有TestCaseSources.

c# resharper integration-testing nunit unit-testing

9
推荐指数
1
解决办法
889
查看次数

Parallel.Invoke()无需等待执行完成

请注意,我知道Parallel.Invoke()用于任务同步.我的问题是:

有没有办法使用Parallel.Invoke这样的调用匿名方法,其中调用不等待执行完成?

我认为并行执行(或并行调用)的重点是不必等待任务完成.如果你想等待一段代码完成执行,而不是使用Parallel.Invoke,为什么不直接调用代码呢?我想我只是不明白Parallel.Invoke的意思.文档只说明它的作用,但没有提到任何用例,这比直接调用代码更有用.

c# parallel-processing multithreading task-parallel-library

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

TeamCity:如何将未版本控制的配置文件放入已签出的存储库中?

我正在使用Git存储库来控制我的应用程序.我的项目结构是这样的,我正在使用本地化到运行应用程序的每个环境的配置文件.这些本地配置文件包含诸如SQL连接字符串之类的内容以及与每个环境相关的其他信息(每个环境都有自己的环境) SQL Server数据库,包括Teamcity中的测试环境).这些文件不是存储库的一部分,但是在创建新环境时会新创建.在这个范例中,TeamCity是另一个环境,我为TeamCity创建了一个配置文件,用于为我的应用程序构建和运行NUnit测试.

我的问题是:如何将不受源代码管理的文件复制到TeamCity检出存储库的文件夹中?在TeamCity开始构建我的应用程序之前,我该如何做到这一点?我确信这是可行的,因为我在这里读到"应该使用代理端签出在每台机器上配置特定于机器的设置(如配置SSL通信等)." 我该怎么做呢?我无法从文档中找到直截了当的答案.

我读到了这个线程,它提到了使用多个根的可能性,这意味着它将从公共存储库中获取公共源,并从具有受限访问权限的私有存储库中获取私有源,并且只能访问TeamCity.这是一个不错的解决方案,我可以看到,这比每次运行构建时批处理文件或复制私有/本地文件更容易维护,但由于某种原因,我觉得放置密码等感觉不太舒服.在存储库中.我不确定为什么我会有这种偏见(看起来它似乎很脆弱)所以如果有人对这两种解决方案有任何经验,我很乐意听到它们.我还想听听有关在受密码保护的存储库下存储敏感信息的意见.这是安全的做法吗?

感谢任何可以提供帮助的人.

PS:我查看了Edit VCS Root页面和"服务器上的自定义克隆目录"设置,但我仍然不知道如何将文件复制到该目录.TeamCity的工作目录是更改还是保持不变?

git testing teamcity configuration continuous-integration

7
推荐指数
2
解决办法
1496
查看次数

使用在IIS下运行的ASP.NET控制iTunes

我一直在尝试用不同程度的成功控制iTunes,但是没有一个能够完全符合我的情况.我环顾网络,尝试了所有提供的解决方案而没有太多运气.我尝试过使用许多不同的iTunes COM库(甚至是Apple开发者网站上的那个),但仍然没有运气.问题是,当我使用Visual Studio的开发服务器创建iTunes COM对象的实例 - iTunesApp时,它可以很好地工作并允许我控制iTunes.这也适用于Console和WinForms应用程序.但是一旦我将其切换为使用IIS服务器,似乎没有任何工作.我需要它作为ASP.NET下的网站运行,以便它可以接收来自其他设备的请求.这具有巨大的潜力,可以构建一个Web应用程序来控制并基本上围绕iTunes构建基于Web的API.它会在创建iTunesApp类的新实例时抛出以下错误:

由于以下错误,检索具有CLSID {DC0C2640-1415-4644-875C-6F4D769839BA}的组件的COM类工厂失败:80080005服务器执行失败(HRESULT异常:0x80080005(CO_E_SERVER_EXEC_FAILURE)).

首先,我使用的iTunes.Interop.dll是在网络上的许多项目中使用的文件.我试了很多次都没有运气,然后试图注册DLL,抛出约没有找到一个入口点DLL的错误.因此,我发现您必须授予运行Web应用程序的应用程序池标识权限,以便在Windows组件服务中访问和执行DCOM服务.我这样做了,也让所有人都可以访问,但仍然没有.然后我尝试使用iTunes安装的COM库(当你去添加参考,而不是浏览到DLL文件,我进入COM选项卡并选择iTunes类型库),没有运气.我怀疑当我授权Windows DCOM组件时,我已经允许安装的iTunes COM库,因为Windows认为安装了(我无法注册原来的iTunes.Interop.dll - Windows不知道它是那里).

安装的iTunes Type Library和iTunes.Interop.dll文件都给了我同样的错误.奇怪的是,错误(DC0C2640-1415-4644-875C-6F4D769839BA)中的CLSID 与iTunes的"应用程序ID"不匹配,因为它在组件服务\ DCOM\iTunes\Properties窗口中调用,即F98206B5-F052-4965-9FA0-85F61BC3C19D.我怀疑是我没有授权Windows中正确的DCOM组件.我在错误中搜索了我的注册表中的CLSID并且它没有返回任何结果,因此我得出结论,它不是任何DCOM组件的应用程序ID(所有应用程序ID都在其中Computer\HKEY_CLASSES_ROOT\Wow6432Node\AppID- 也没有找到它).但由于它是错误中的CLSID,因此必须在某处引用它,我无法在任何地方找到它.搜索在谷歌或者ID是没有帮助的或者是因为他们都返回的搜索结果,其中包括iTunes中,但没有足够具体的问题.

我甚至尝试过多线程方法.由于COM模型在STA模型中运行,而Web服务器在MTA中运行,因此我发现其中一个解决方案建议将服务器的线程执行模型转换为STA,然后调用COM库.这也不起作用.我在2台运行完全独立的计算机上重复了这个问题,并且在两台计算机上,Visual Studio开发服务器(以及控制台和WinForms应用程序)都可以运行它,但IIS不能.

这是我正在使用的代码(没有多线程):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Principal;
using System.Threading;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using iTunesLib;


namespace NewASPXNetduino2
{
        public partial class _Default : System.Web.UI.Page
        {
                protected void Page_Load(object sender, EventArgs e)
                {
                        Response.Write(WindowsIdentity.GetCurrent().Name + "\n");

                        var iTunes = new iTunesApp();

                        iTunes.Play();
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

错误是抛出线: …

asp.net com iis interop itunes

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

如何在命名空间级别使用 [UsedImplicitly] 属性?

ReSharper 有一个 [UsedImplicitly] 属性,该属性会忽略未直接引用的属性。JetBrains 推荐使用:https : //www.jetbrains.com/help/resharper/2016.1/MemberCanBePrivate.Global.html

有没有办法在命名空间级别应用此属性?或者是否有另一种方法可以忽略给定命名空间(可能还有所有子命名空间)中的所有类?

resharper code-analysis

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

RabbitMQ C# API:如何检查绑定是否存在?

使用 RabbitMQ C# API,我将如何检查是否存在从给定队列到给定交换的绑定?

很多 RabbitMQ 调用都是幂等的,所以有些人可能会说这些情况下不需要检查,但我认为它们在测试中会很有用。

.net c# messaging rabbitmq

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

如何迭代BufferBlock <T>中的项目?

我最近开始使用.NET 4.5中的TPL Dataflow库,并且块的整个概念对我来说是新的.我正在我的应用程序中实现生产者 - 消费者队列,我需要防止重复的消息被放入队列,因此需要检查消息是否已经排队.我正在使用一种BufferBlock<Message>类型(Message是一种自定义类型).BufferBlock具有Count属性但在此问题中没有帮助,因为需要唯一标识消息.

有没有办法检查是否BufferBlock包含一个项目或检查所有项目并检查它们?是否有可能转换BufferBlock为允许迭代项目的东西?我正在按照我在MSDN上看到的一个例子,它没有检查项目是否在队列中,但我认为检查队列的内容是一个非常需要的操作.任何帮助表示赞赏.

.net c# producer-consumer task-parallel-library tpl-dataflow

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

如何删除 RabbitMQ 交换?

这似乎是一个非常基本的操作,但我找不到删除 RabbitMQ 中命名交换的方法。我在 Windows 上运行它并使用命令行工具。此时,我会选择 .NET API 调用来删除交换(如果存在)。谢谢。

c# rabbitmq rabbitmq-exchange

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