尝试使用Bower 为arbor添加依赖项.这个JS库没有在GitHub中标记的任何版本,但已发布到Bower.应该如何看待依赖bower.json?
"dependencies": {
"arbor": ...
}
Run Code Online (Sandbox Code Playgroud) 我目前正在权衡DI和SL之间的优缺点.但是,我发现自己处于以下问题22中,这意味着我应该只使用SL作为一切,并且只在每个类中注入一个IoC容器.
DI Catch 22:
一些依赖项,如Log4Net,根本不适合DI.我称之为元依赖关系并认为它们对调用代码应该是不透明的.我的理由是,如果一个简单的类'D'最初是在没有记录的情况下实现的,然后增长到需要记录,那么依赖类'A','B'和'C'现在必须以某种方式获得这种依赖并将其从'A'到'D'(假设'A'组成'B','B'组成'C',依此类推).我们现在已经进行了重要的代码更改,因为我们需要登录一个类.
因此,我们需要一种不透明的机制来获取元依赖性.我想到了两个:Singleton和SL.前者具有已知的局限性,主要是关于刚性范围的能力:最好的是Singleton将使用存储在应用程序范围内的抽象工厂(即在静态变量中).这允许一些灵活性,但并不完美.
更好的解决方案是将IoC容器注入此类,然后使用该类中的SL从容器中解析这些元依赖关系.
因此,捕获22:因为类现在正在注入IoC容器,那么为什么不使用它来解析所有其他依赖项呢?
我非常感谢你的想法:)
c# singleton dependency-injection dependency-management service-locator
将后置条件添加到返回的异步方法的推荐方法是什么Task<T>?
我已经阅读了以下建议:
http://social.msdn.microsoft.com/Forums/hu-HU/async/thread/52fc521c-473e-4bb2-a666-6c97a4dd3a39
帖子建议将每个方法实现为同步,签约,然后将异步对应实现为简单的包装器.不幸的是,我不认为这是一个可行的解决方案(也许是通过我自己的误解):
await其他异步方法的新方法因此被强制为异步.这些方法本质上是异步的,不能轻易转换为同步.它们不仅仅是包装纸.即使我们通过说我们可以使用.Result或.Wait()代替await(这实际上会导致某些SyncContexts死锁,并且无论如何都必须在异步方法中重写)来使后一点无效,我仍然相信第一点.
有没有其他想法,或者有什么我错过的代码合同和TPL?
在Windows 7 x64上的VS2012中使用Code Contracts 1.4.51019.0时,我从ccrewrite收到以下编译错误: "该方法或操作未实施."
它似乎是由属性访问者和async缺乏内在的方法的组合引起的await.
复制步骤:
创建一个新的类库,启用"完整"运行时合同检查:
namespace CodeContractsAsyncBug
{
using System.Threading.Tasks;
public class Service
{
// Offending method!
public async Task ProcessAsync(Entity entity)
{
var flag = entity.Flag;
}
}
public class Entity
{
public bool Flag { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
还有其他人经历过这个吗?
编写应该应用于站点中每个页面的断言的最佳方法是什么?
我正在测试我的网站页脚中是否存在元素,因此该元素应该存在于所有页面上.
我正在考虑编写一个单独的文件来测试网站的模板元素,然后将其包含在所有规范中.虽然看起来好像没有其他人这样做?
我想用香蕉RDF在我的项目,最好通过将其定义为在依赖build.scala使用dependsOn:
lazy val root = Project("root", file(".")) dependsOn RootProject(uri("git://github.com/w3c/banana-rdf"))
Run Code Online (Sandbox Code Playgroud)
但是,banana-rdf是一个多项目,因此需要以不同的方式组合.从我所看到的,这些多项目定义只允许您将项目位置指定为文件路径,并且不允许URI.
问题:我是否正确地说我必须将这些多项目GIT依赖项克隆到我的项目中并将它们作为文件夹引用?
我更喜欢将所有GIT克隆留给SBT的想法,并将这些克隆到某个tmp SBT文件夹而不是混乱我的项目......
我目前正在开发一个在很大程度上使用TAP的异步应用程序.每个具有产卵方法的类Task也都TaskScheduler注入了它.这允许我们执行任务的显式调度,据我所知,这不是微软采用Async CTP的方式.
我对新方法(隐式调度)的唯一问题是我们以前的哲学一直是"我们知道延续将始终指定他们的任务调度器,所以我们不需要担心我们完成任务的上下文" .
远离它确实让我们感到担心,因为它在避免细微的线程错误方面效果非常好,因为对于每一段代码我们都可以看到编码器已经记住要考虑他所使用的线程.如果他们错过了指定任务调度程序,那就是一个错误.
问题1:任何人都可以向我保证隐含的方法是个好主意吗?我看到ConfigureAwait引入了很多问题(false)以及传统/第三方代码中的显式调度.例如,我怎样才能确保我的'await-ridden'代码始终在UI线程上运行?
问题2:因此,假设我们TaskScheduler从代码中删除所有DI并开始使用隐式调度,那么我们如何设置默认任务调度程序?如何在等待昂贵的方法之前通过方法中途更改调度程序,然后再将其重新设置?
(ps我已经阅读过http://msmvps.com/blogs/jon_skeet/archive/2010/11/02/configuring-waiting.aspx)
我可以使用代码约定来定义接口上的只读,不变属性吗?即实例化后总是产生相同值的属性?
我在运行IIS6的Windows XP Pro SP2 x64计算机上收到以下错误:
System.Runtime.InteropServices.COMException:
Retrieving the COM class factory for component with CLSID
{3C250CBD-6CC9-11D2-9457-00004B48467E} failed due to the following error:
80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Run Code Online (Sandbox Code Playgroud)
尝试实例化COM互操作对象时会发生这种情况.
奇怪的是,这可以在与应用程序池(AD中的用户)相同的帐户下运行的控制台应用程序中正常工作.即两者都使用UserX,所以它似乎不是一个明显的权限问题.
其他人有类似的东西吗?
在第一个await被调用之前,在异步方法的开头有昂贵的代码是不是很糟糕?这个代码应该用一个包裹TaskEx.Run吗?
public async Task Foo()
{
// Do some initial expensive stuff.
// ...
// First call to an async method with await.
await DoSomethingAsync;
}
Run Code Online (Sandbox Code Playgroud) c# ×7
.net ×5
async-ctp ×3
.net-4.5 ×2
angularjs ×1
asp.net ×1
async-await ×1
banana-rdf ×1
bower ×1
c#-5.0 ×1
com ×1
end-to-end ×1
iis ×1
javascript ×1
protractor ×1
sbt ×1
scala ×1
singleton ×1
testing ×1