我是C#/ .NET的新手,但我已经做了很长一段时间的TDD了.我想知道在C#中编写测试时可以用来模拟对象的最佳框架是什么?
我有一个log4J设置,其中根记录器应该将ERROR级别消息和上面的消息记录到控制台,另一个记录器将所有内容记录到syslog中.
log4j.properties是:
# Root logger option
log4j.rootLogger=ERROR,R
log4j.appender.R=org.apache.log4j.ConsoleAppender
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %p %t %c - %m%n
log4j.logger.SGSearch=DEBUG,SGSearch
log4j.appender.SGSearch=org.apache.log4j.net.SyslogAppender
log4j.appender.SGSearch.SyslogHost=localhost
log4j.appender.SGSearch.Facility=LOCAL6
log4j.appender.SGSearch.layout=org.apache.log4j.PatternLayout
log4j.appender.SGSearch.layout.ConversionPattern=[%-5p] %m%n
Run Code Online (Sandbox Code Playgroud)
在代码我做
private static final Logger logger = Logger.getLogger("SGSearch");
.
.
.
logger.info("Commencing snapshot index [" + args[1] + " -> " + args[2] + "]");
Run Code Online (Sandbox Code Playgroud)
发生的事情是我获得了所有日志记录级别的控制台日志记录.似乎正在发生的事情是,SGSearch的级别会以某种方式覆盖根记录器的级别设置.我无法弄清楚.
我已经确认Log4J正在读取我认为的属性文件,而没有其他(通过-Dlog4j.debug选项)
注意_src继承IQueryable<U>和V继承new();
我写了以下语句,没有语法错误.
IQueryable<V> a = from s in _src where (s.Right - 1 == s.Left) select new V();
Run Code Online (Sandbox Code Playgroud)
但如果我按如下方式重写它,Visual Studio编辑器会在"选择"中抱怨错误
IQueryable<V> d = _src.Where(s => s.Right - 1 == s.Left).Select(s=> new V());
Run Code Online (Sandbox Code Playgroud)
错误是:
The type arguments cannot be inferred from the usage. Try specifying the type arguments explicitly.
Candidates are:
System.Collections.Generic.IEnumerable<V> Select<U,V>(this System.Collections.Generic.IEnumerable<U>, System.Func<U,V>) (in class Enumerable)
System.Linq.IQueryable<V> Select<U,V>(this System.Linq.IQueryable<U>, System.Linq.Expressions.Expression<System.Func<U,V>>) (in class Queryable)
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释这种现象,解决错误的方法是什么?
===编辑(2010-03-16 5:35 pm)===
谢谢Mike Two.我也尝试了一个像你这样的简单例子.它可以工作,但这不是我的.我发布的代码如下:
public class NSM<U, V> where U …Run Code Online (Sandbox Code Playgroud) 我正在尝试在模板上显示一个表单,但是我得到了一个很棒的错误:
渲染时捕获AttributeError:'WSGIRequest'对象没有属性'get'
错误在这一行:{%for form in form.visible_fields%}
我的看法 :
def view_discussion(request, discussion_id):
discussion = get_object_or_404(Discussion, id=discussion_id)
form = BaseMessageForm(request)
return render(request,'ulule/discussions/view_discussion.html', {
'discussion':discussion,
'form':form,
})
Run Code Online (Sandbox Code Playgroud)
我的表格:
class BaseMessageForm(forms.Form):
message_content = forms.CharField(widget=forms.HiddenInput())
Run Code Online (Sandbox Code Playgroud)
我的模板:
<form action="" method="post">
{% csrf_token %}
{% for field in form.visible_fields %}
<div class="fieldWrapper">
{% if forloop.first %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% endif %}
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
</div>
{% endfor %}
<p><input type="submit" value="Send …Run Code Online (Sandbox Code Playgroud) 我正在处理以下代码:
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.*;
public class CreatXMLFile {
public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
// System.out.print("Enter number to add elements in your XML file: ");
// String str = bf.readLine();
int no=2;
// System.out.print("Enter root: ");
String root = "SMS";
DocumentBuilderFactory documentBuilderFactory =DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder =documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
Element rootElement = document.createElement(root);
document.appendChild(rootElement);
// for (int i = 1; i <= …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的WPF应用程序中更改一些配置文件用户设置值,但它只能部分工作.值正确更改,程序运行正常.我甚至可以重新启动程序,价值仍然是我改变它的那个.问题是,当我打开.exe.config文件时,该值仍然是旧值.我使用此代码更改值:
Properties.Settings.Default.ProjectNumber = varTestExample;
Properties.Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)
这个保存代码在哪里保存更改以及程序在运行此代码后如何/在何处读取值?如果我运行程序的干净版本,则从.exe.config文件中正确获取ProjectNumber值,如果我更改配置文件中的值,则在运行程序时也会更改.但是只要我运行上面的代码,程序就不会从配置文件中读取值.为什么?
我们将使用C++作为编程语言开始一个持久的项目.
我读到C++ 0x将在2011年问世,所以他们称之为C++ 11.
当C++ 11出现时,我们仍然会开发该项目,并且想知道现在是否可以使用新C++标准的任何功能,以便能够:
我需要在我的程序中实现搜索SD卡.
目前我正在使用搜索所有可移动设备,例如:
searcher = New Management.ManagementObjectSearcher("\\localhost\root\cimv2", "SELECT DeviceId FROM Win32_LogicalDisk WHERE DriveType=2 AND Size>0");
Run Code Online (Sandbox Code Playgroud)
但它也发现了USB闪存驱动器.有没有找到SD卡的正确方法?我需要的是一般只有可用SD卡的驱动器号(如"F:"左右).
我需要在我的应用程序中实现某种形式的通信机制,以便将通知/消息从一个应用程序实例发送到所有其他应用程序实例.这是一个正常的情况,有人添加和项目或删除和项目,你想通知其他用户这已发生.
应用程序在客户端上运行并连接到本地网络上的数据库.所以它不像所有客户端访问应用程序的服务器实例.所以从我所知道的我可以使用MessageQueues或某种形式的数据库轮询,其中我有一个存储所有消息的表(不理想).
问题是我需要非常快速地实现这一点,所以遗憾的是不能变得非常复杂但需要最快捷的解决方案.
谢谢您的帮助!
我正在考虑采用HOBO来更快地开发一些我想为自己开发的Rails应用程序.
显然,似乎有一定的学习曲线来获得gem及其dryml模板的不同概念和特定编码实践.
文档似乎也几乎不存在,所以我不确定我是否想在这个方向上投入时间,但介绍截屏对我来说非常有吸引力.
让我知道你对Rails + Hobo的体验(如果有的话).