在我在网上看到的大多数样本中,MVC控制器中的DI都是这样完成的
public ProductController(IProductRepository Rep)
{
this._rep = Rep;
}
Run Code Online (Sandbox Code Playgroud)
使用自定义ControllerFactory,它使用选择的DI框架并注入存储库.
为什么以上认为比上述更好
public ProuctController()
{
this._rep = ObjectFactory.GetInstance<IProductRepository>();
}
Run Code Online (Sandbox Code Playgroud)
这将得到相同的结果,但不需要自定义控制器工厂.
就测试而言,测试应用程序可以有一个单独的BootStrapper.这样,当控制器被测试时,他们可以获得假的存储库,当它们被用于实际时,它们将获得真实存储库.
我遇到了一些我在C#中编写的代码问题.
我正在使用MailMessage和SMTP组件发送文档.我将要发送的文件复制到临时目录(例如c:\ temp),遍历文档并将它们附加到电子邮件中.
电子邮件发送正常,但是当我尝试从临时目录中删除文件时,我收到以下错误:
该进程无法访问该文件,因为该文件正由另一个进程使用
我不明白为什么会这样.下面是处理文档的代码
public void sendDocument(String email, string barcode, int requestid)
{
string tempDir = @"c:\temp";
//first we get the document information from the database.
Database db = new Database(dbServer, dbName, dbUser, dbPwd);
List<Document> documents = db.getDocumentByID(barcode);
int count = 0;
foreach (Document doc in documents)
{
string tempPath = tempDir + "\\" + doc.getBarcode() + ".pdf";
string sourcePath = doc.getMachineName() + "\\" + doc.getFilePath() + "\\" + doc.getFileName();
//we now copy the file from the source …Run Code Online (Sandbox Code Playgroud) 我一直在试验John Resig的微模板,它很有效.但是,标记不会通过XHTML 1.0 Transitional验证测试.(除其他外,id属性会产生错误.)
用[[,]]替换标签标识符<,>,通过验证.因此,我创建了一个js脚本,在加载时(jQuery文档就绪)将方括号转换回常规标记.这适用于FF,但不适用于IE,Chrome等.
嵌入在CDATA标签中的脚本也会验证.
问题:有没有办法在脚本中插入微模板并仍然通过XHTML验证?我的想法是在页面加载后删除CDATA标签.但可能有更聪明的方法.(注意:我不想通过js注入HTML,因为标记很难维护.)
PS:我查看了其他js模板,但它们要么不符合XHTML,要么太笨重.
TIA有任何提示.
我想得到的一些信息是如何使用JQuery从文本框(或textarea)中删除某些字符.我有C#中的代码,但我似乎无法将其转换为JQuery javascript.我的问题是我不知道如何从文本框中获取值作为字符数组,然后我可以循环并与给定的一组不需要的字符进行比较.这就是我在JQuery中的"远":
$("input[type=text], textarea").change(function() {
// code here
});
Run Code Online (Sandbox Code Playgroud)
这是我在C#中的代码:
for (int i = 0; i < charArray.Length; i++)
{
current = charArray[i];
if ((current == 0x9) ||
(current == 0xA) ||
(current == 0xD) ||
((current >= 0x20) && (current <= 0xD7FF)) ||
((current >= 0xE000) && (current <= 0xFFFD)))
_validXML.Append(current);
}
return _validXML.ToString().TrimEnd((char)32, (char)160) ;
Run Code Online (Sandbox Code Playgroud)
更新:
我在下面给出了一些答案的组合(我将赞成它们),我的最终JQuery看起来像这样并且有效:
$(document).ready(function() {
$(":text, textarea").change(function() {
var text = "";
var arr = $(this).val()
$.each(arr, function(i) {
var c = arr.charCodeAt(i);
if …Run Code Online (Sandbox Code Playgroud) 当我在我的存储库的子文件夹中执行git状态时,它还包括父文件夹的状态.
有没有办法将git-status限制在一个特定的文件夹中?
给定两个相同的boost::variant实例a和b,表达( a == b )是允许的.
但( a != b )似乎未定义.为什么是这样?
虽然我不是在c#中使用out参数的忠实粉丝,但我想知道为什么Java选择不在其语言语法中包含它.是否有任何特殊原因或者因为一个人可以简单地将一个对象作为参数类型传递?
我想在C#中这样做,但我不知道如何:
我有一个类名为-eg的字符串:FooClass我想在这个类上调用(静态)方法:
FooClass.MyMethod();
Run Code Online (Sandbox Code Playgroud)
显然,我需要通过反思找到对类的引用,但是如何?
我有一个小型的WinForms应用程序,它利用BackgroundWorker对象来执行长时间运行的操作.
后台操作会抛出偶然的异常,通常是当有人打开正在重新创建的文件时.
无论代码是否从IDE运行,.NET都会弹出一个错误对话框,通知用户发生了未处理的异常.使用Release配置编译代码也不会改变它.
根据MSDN:
如果操作引发了代码无法处理的异常,则BackgroundWorker会捕获异常并将其传递到RunWorkerCompleted事件处理程序,在该处理程序中,它作为System.ComponentModel .. ::.RunWorkerCompletedEventArgs的Error属性公开.如果您在Visual Studio调试器下运行,则调试器将在DoWork事件处理程序中引发未处理的异常的位置中断.
我希望有时抛出这些异常,并希望在RunWorkerCompleted事件而不是DoWork中处理它们.我的代码正常工作,并且在RunWorkerCompleted事件中正确处理错误,但我不能在我的生活中弄清楚如何停止.NET错误对话框抱怨发生"未处理的异常".
是不是BackgroundWorker应该自动捕获该错误?这不是MSDN文档中的内容吗?什么我需要做的通知.NET,这个错误是被处理,同时仍允许例外propage到RunWorkerCompletedEventArgs的错误属性?
我正在寻找一种方法来改变录制音频的音高,因为它保存到磁盘或播放(实时).我知道音频单元可以用于此.iPhone为音频单元提供有限的支持(例如,据我所知,它不可能创建/使用自定义音频单元),但有几个开箱即用的音频单元可用,其中一个是AUPitch.
我究竟如何使用音频单元(特别是AUPitch)?你不知怎的把它挂进音频队列?是否可以将音频单元链接在一起(例如,同时添加回声效果和音高变化)?
编辑:在检查iPhone SDK标题后(我认为AudioUnit.h,我现在不在Mac前面),我注意到AUPitch被注释掉了.所以它毕竟不像iPhone上的AUPitch.泣 泣
Apple似乎最近在developer.apple.com上更好地组织了他们的iPhone SDK文档 - 现在更难找到对AUPitch等的引用.
也就是说,我仍然对在iPhone上使用音频单元(一般)的质量答案感兴趣.
c# ×4
javascript ×2
asp.net-mvc ×1
audio ×1
c++ ×1
core-audio ×1
delete-file ×1
email ×1
exception ×1
git ×1
ios ×1
iphone ×1
java ×1
jquery ×1
objective-c ×1
reflection ×1
structuremap ×1
templates ×1
xhtml ×1