在我的Silverlight 4应用程序中,我将ContentControl其ContentTemplate属性绑定到数据上下文中的属性.这很好.但是,一旦呈现模板的内容DataContext设置为null.我希望内容继承与DataContext设置相同ContentControl.有没有办法让这件事发生?
我们的应用程序有一个后台线程,通过System.Diagnostics.Process以下方式生成一个进程:
Process.Start(
new ProcessStartInfo
{
FileName = url,
UseShellExecute = true
}
);
Run Code Online (Sandbox Code Playgroud)
这曾经没有任何问题.但现在,后台线程正在悄无声息地死去; 它永远不会从通话中回来Process.Start.处理此代码的catch块System.Exception也未到达.即使我在Visual Studio调试器中抛出时启用了处理异常,我也看不到异常.奇怪的是,这个过程很快就会产生; 使用预期的URL启动用户的默认浏览器.
我们的流程的入口点标记[STAThread]为推荐.
什么可能导致我们的线程无声终止?是否有任何技术可用于调试线程终止期间发生的事情?
更新:
看起来线程毕竟是活着的; 它只是没有从通话中返回.这是它的堆栈跟踪:
更新2:
在不使用shell执行的情况下启动cmd.exe可以解决此问题.谢谢你!但是,我仍然想知道为什么呼叫没有返回.
更新3:
Shell钩子听起来像是一个逻辑解释,可能导致调用不返回.我找不到流氓模块,但在最后一次尝试通过shell执行运行之后,调用确实返回了.
在任何情况下,用户可能加载了shell扩展,这可能会导致进程启动并导致我的代码无法返回.我们不能做任何事情是,所以正确答案是使用推出的cmd.exe进程的解决方法.
嘿伙计们,我想听听你在控制器级别和/或域级别应用依赖注入的主要优点和缺点是什么.
让我解释; 如果我收到IUserRepository作为我的用户的参数,我可以通过两种方式进行:
1)我直接在我的域对象上注入IUserRepository,然后在没有新对象的情况下在控制器级别使用User,这意味着,我从DI容器中准备好它们.
2)我在我的控制器上注入了IUserRepository(比如Register.aspx.cs),然后我使用来自DI容器的依赖项新建了所有域对象.
昨天,当我和我的朋友交谈时,他告诉我,如果你从容器中获取你的域对象,你就会失去它的生命周期控制,因为容器为你管理它,他的意思是在处理大型xml时它可能容易出错.配置文件.意见不一致,因为您可能有一个测试循环遍历程序集中的每个域对象,然后询问容器是单例,请求范围,会话范围还是应用程序escope.如果它们中的任何一个是真的,它就会失 确保此类问题不会发生的一种方法.
我更倾向于使用域方法(1),因为我看到在控制器级别上重复的代码行节省了很多(当然XML文件中会有更多的行).
我的朋友提出的另一点是,想象一下,由于任何原因,你有义务从di容器A改为B,并且说B不支持构造函数注入(对于一个接缝容器,Java,它操纵BC或者只有通过setter注入完成它的任务),他的观点是,如果我在控制器级别拥有所有代码,我就能够以平滑的方式重构我的代码,因为我可以访问Auto-Refactoring和Auto等工具-Complete,在处理XML文件时不可用.
我坚持这一点,因为我应该立即做出决定.
我应该利用我的架构采用哪种方法? 还有其他的思维方式吗?
你们真的认为这是一个相关的问题,我应该担心吗?
我有一套相当标准的单元测试.
[TestClass]
public class MyTestClass
{
[TestMethod]
public async Task MyClass_DoesStuff()
{
//...
await foo;
}
}
Run Code Online (Sandbox Code Playgroud)
这一切都运行良好,但后来我需要降级到.NET 4.0.我做了必要的包安装,并把一切都建成了.但是,现在我的单位测试不再工作了.相反,我得到这些错误:
UTA007:类MyTestClass中定义的方法MyClass_DoesStuff没有正确的签名.使用[TestMethod]属性标记的测试方法必须是非静态的,public,return-type as void,不应该使用任何参数.示例:public void Test.Class1.Test().此外,如果您正在运行异步单元测试,则return-type必须为Task.示例:public async Task Test.Class1.Test2()
也许测试运行器不能识别System.Threading.Tasks.Task.NET 4.0?我安装Microsoft Async,Microsoft BCL Build Components以及Microsoft BCL Portability Pack来自的NuGet.
有没有办法让我在.NET 4.0上运行异步单元测试?
编辑:
标记为(TestMethod:async Task TestSth()不能与.NET 4.0一起使用的"重复" )是测试资源管理器中未显示的测试,而在我的情况下,我发布了错误.不重复.
在帮助下编写一些Haskell代码时hlint,我按照提示向函数添加了类型签名.它注入了类似这样的东西:
{-# LANGUAGE RankNTypes #-}
multipleOf :: forall a. Integral a => a -> a -> Bool
multipleOf divisor n = n `mod` divisor == 0
Run Code Online (Sandbox Code Playgroud)
这种语言扩展对我来说是新的,但据我所知,这与更简单的相同:
multipleOf :: Integral a => a -> a -> Bool
multipleOf divisor n = n `mod` divisor == 0
Run Code Online (Sandbox Code Playgroud)
我读过的每个N级类型的例子似乎都没有在已经可用的多态上添加任何新东西,而且这种forall语法似乎没有添加任何值.
我错过了什么?forall除了没有扩展的可用语法之外,还有一个很好的例子吗?
我们的React应用程序使用通用渲染.页面的html/body/head元素是使用React组件在服务器端生成的.通常,我们可以通过JSX 在我们的正常情况下创建类似<script>和<link>元素的东西<head>.不幸的是,一旦我们开始需要插入第三方HTML片段,事情变得棘手.这些片段本质上是一个字符串'<script src="some/url.js"></script><link rel="stylesheet" href="/some/css">'.通常,HTML片段可以被注入到通过一些元件容器dangerouslySetInnerHTML,但也有是在没有容器元素<head>的HTML文档的.这迫使我们要么:
React有没有办法在没有容器元素的情况下将HTML片段注入文档?
npm(我正在使用npm@5)是否有一种好方法可以为收缩包装/锁定文件项目中的嵌套依赖项进行版本提升?
执行 annpm install package@latest --save将按预期更新shrinkwrap 文件,但它也会添加对 的依赖package.json,这不是我想要的。执行 annpm install --no-save package@latest将正确跳过更新package.json,但它也不会更新shrinkwrap 文件。
有没有一种简单的方法可以在不接触的情况下更新子依赖项和收缩包装文件package.json?
在我们的.NET软件开发商店中,我们设置了CruiseControl.NET来构建28个项目,其中一些是相互依赖的.每个项目大致代表一个Visual Studio项目或Flex库与单元测试配对.我很恼火的是,我没有找到一个好的方法来确保项目按照表示依赖关系的顺序构建.
这就是我在做的事情:
在某种程度上,此设置有效.主要问题是如果某人对项目A和项目B中的代码进行了更改,其中项目B依赖于项目A.有时,项目B将在项目A之前构建.因为项目A尚未构建,所以可以有时导致项目B破裂.这是暂时的,因为间隔触发器会导致项目A稍后构建,并且其成功构建会触发项目B重建并得到修复.我想要避免的是在项目A之前建造项目B,以便不会发生中间破坏.
您使用哪些实践来正确管理CruiseControl.NET服务器上的相互依赖性?此时,我不愿意改为像TeamCity这样的非自由持续集成包.
有时,当帮助另一个程序员编写代码时,我会指示我希望他们输入什么.有时这可能是一个令人沮丧的练习,直到程序员习惯了你如何用语言表达代码(即"分配5到x"对比"x等于5" ).我还没想到的一件事是如何在C#中有效地发音lambda表达式.
例如,如果我想(x, y) => x * y输入,这是我尝试过的各种事情:
我:Lambda表达式取x和y,得x倍y
他:"嗯?"
我:代表服用x和y,返回x倍y
他:
delegate(x, y) { return x * y; }x和y是什么类型的?我:x和y的元组,右箭头x乘y
他:"呃?"
我:打开paren,x,逗号,y,close-paren,右箭头x次y
他:(x,y) - > x*y
我:呃,双箭头?
他:>>
我:叹气......等于大于
他:(哦,大于或等于?)> =
我:好的,让我开车一会儿!
有问题的程序员知道lambda表达式是什么,但是它们很难沟通.我相信我们会学习如何,但我甚至都不知道我是否正确行事.您是否找到了一种成功的方法来指示C#中这种相对较新的语言结构?或者更好的是,是否有一种语言中立的方式来发音lambda表达式?
有没有人为Windows Store App开发提供良好的TDD设置?我已经习惯使用模拟框架,但由于WinRT中缺少动态程序集生成,因此这不再是一个选项.
我已经看过alpha MoqRT框架,但我希望避免在这样的实验阶段.我也被使用模拟对象所迷恋,我不愿意使用作为Microsoft(Microsoft Fakes)替代品提供的存根或填充程序.
你们有没有成功地找到使用DI和正确隔离的TDD风格单元测试进行Windows Store App开发的好技术?如果是这样,你做了什么?
编辑:
我还注意到我的"Windows Store App"单元测试项目中没有"Add Fakes Assembly"选项,因此可能不是一个选项.
.net ×4
c# ×2
unit-testing ×2
.net-4.0 ×1
asynchronous ×1
browser ×1
controller ×1
data-binding ×1
datatemplate ×1
dependencies ×1
dictating ×1
dns ×1
haskell ×1
lambda ×1
lockfile ×1
mocking ×1
node.js ×1
npm ×1
process ×1
reactjs ×1
shell ×1
silverlight ×1
spring.net ×1
tdd ×1