我想比较两个不同版本的对象,并在UI中显示它们的差异.
首先,我调用一个方法来了解这两个对象之间是否存在任何差异
方法是:
public bool AreEqual(object object1,object object2, Type comparisionType)
Run Code Online (Sandbox Code Playgroud)
如果上面的方法返回true,我调用GetDifferences方法来获得以下差异:
public ObjectDifference[] GetObjectDifferences(object object1, object object2, Type comparisionType)
{
ArrayList memberList = new ArrayList();
ArrayList differences = new ArrayList();
memberList.AddRange(comparisionType.GetProperties());
memberList.AddRange(comparisionType.GetFields());
for (int loopCount = 0; loopCount < memberList.Count; loopCount++)
{
object objVal1 = null;
object objVal2 = null;
MemberInfo member = ((MemberInfo)memberList[loopCount]);
switch (((MemberInfo)memberList[loopCount]).MemberType)
{
case MemberTypes.Field:
objVal1 = object1 != null ? ((FieldInfo)memberList[loopCount]).GetValue(object1) : null;
objVal2 = object2 != null ? ((FieldInfo)memberList[loopCount]).GetValue(object2) : null;
break; …Run Code Online (Sandbox Code Playgroud) 我正在编写一个物理模拟软件的想法,其中每个物理元素都将在自己的线程中进行模拟.
这种方法有几个优点.它在概念上非常接近现实世界的运作方式.将系统扩展到多台机器要容易得多.
但是,为了实现这一点,我需要确保所有线程以相同的速度运行,并对"相同"进行相当自由的解释.比如说在彼此的1%之内.
这就是为什么我不一定需要Thread.join()之类的解决方案.我不想要一些超级控制的学校情妇,确保所有线程定期与彼此同步.我只需要能够以大致相同的速度运行线程运行时(无论是Java,Erlang还是其他最适合此问题的运行时).
任何建议都将非常感激.
更新2009-03-16
我要感谢所有回答这个问题的人,特别是那些回答基本上都是"不要这样做"的人.由于每个人的评论,我现在更了解我的问题,而且我不太确定我应该像我原先计划的那样继续.尽管如此,我觉得彼得的答案是问题本身的最佳答案,这也是我接受它的原因.
许多开发人员正在使用测试驱动开发(TDD)设计他们的应用程序,但我想知道我应该在哪个阶段将TDD合并到我的项目中?我应该首先设计我的类,进行一些单元测试并确定需要哪些方法或首先设计方法,然后再进行一些单元测试?
最好的方法是什么?
工作空间文件夹中是否有任何配置文件,其中Eclipse存储属于工作空间的所有项目的列表?
我正在刷新LINQ,并试图理解let和使用into关键字之间的区别.到目前为止,就我的理解而言,let关键字似乎比关键字更好into.
该into关键字实质上允许在投影后继续查询.(只是想明确说明我不是指组连接的那个.)
给定一系列名称,它允许人们执行以下操作:
var intoQuery =
from n in names
select Regex.Replace(n, "[aeiou]", "")
into noVowel
where noVowel.Length > 2
select noVowel;
Run Code Online (Sandbox Code Playgroud)
它需要选择的结果,并将其放置到noVowel变量,然后允许一个引入额外的where,orderby和select条款.一旦noVowel变量被创建,该n变量不再可用.
该let关键字,而另一方面,使用温度匿名类型,让你在同一时间重复使用一个以上的变量.
您可以执行以下操作:
var letQuery =
from n in names
let noVowel = Regex.Replace(n, "[aeiou]", "")
where noVowel.Length > 2
select noVowel;
Run Code Online (Sandbox Code Playgroud)
这两个noVowel和n变量都可以使用(即使我在这种情况下没有使用它).
虽然我可以看到差异,但我不太明白为什么人们会想要在into关键字上使用let关键字,除非明确要确保以前的变量不能在查询的后半部分使用.
那么,两个关键词存在的原因是否存在?
第一次海报,温柔;-)
我正在编写一个作为Windows服务运行的音频应用程序(用C++编写),使用WASAPI从插孔中取样,并对其进行一些处理.
我注意到的一点是,当我的应用程序"正在录制"时,Windows不会自动暂停或休眠.
我已经注册了电源事件通知,如果我自己按下暂停按钮,我的服务会获得适当的电源事件并处理它们.如果我让系统自行暂停,则永远不会收到电源事件.
如果我删除了我引用WASAPI的代码位,则手动和自动挂起都会正常接收电源事件.所以似乎有一些关于使用WASAPI告诉Windows忽略自动挂起计时器的事情.
任何人都可以帮助解释这种行为,我有什么办法可以阻止它吗?我不希望我的应用程序成为行为不端并阻止系统暂停的应用程序之一.
我的项目是一个应用程序,我们在其中加载各种程序集并对它们执行操作.
我们陷入了这样一种情况:我们需要添加对我们加载的程序集的引用(将由用户选择).所以我需要在运行时添加对DLL的引用.
我试过这个网站,但在这里他们只支持像System.Security等微软DLL.我想添加对用户创建的dll(类库)的引用.
我目前正在将一些源代码从Subversion(SVN)存储库传输到我的客户端的Team Foundation Server.我偶然发现的一件事是,如果没有先将该存储库中的所有文件都拉到本地工作区的本地工作文件夹中,似乎无法编辑存储库.我正在使用Visual Studio 2008团队资源管理器.
我的存储库类似于这个结构:
$
$/branches
$/trunk
$/trunk/Solution1
$/trunk/Solution1/... etc.
Run Code Online (Sandbox Code Playgroud)
现在我想要做的是在主干的根目录中添加一个新文件夹(即$/trunk/Docs).因为Solution1文件夹树($/trunk/Solution1)包含大量数据,所以我不想先获取该文件夹的本地副本.我想在服务器端创建新的"Docs"文件夹.但是,我注意到当选定的存储库文件夹不可用作本地工作空间中的工作文件夹时,源代码管理器工具栏上的"新建文件夹"按钮将显示为灰色.
使用SVN这从来都不是问题,因为使用TortoiseSVN我可以使用Repo-Browser创建一个新的文件夹服务器端.SVN不要求您首先签出其父文件夹.
有人知道如何在服务器端编辑TFS存储库吗?我错过了一些琐碎的事情吗?
我在我的本地Windows机器上运行MySQL 5.x,使用MySQL管理员,我无法连接到我使用root帐户创建的数据库.我得到的错误是:
MySQL错误号1045用户'root'@'localhost'访问被拒绝(使用密码:YES)
我不记得更改root帐户凭据,但我知道我试图通过添加IP来让LAN上的其他计算机访问数据库.我为其中一个IP做的一件事是指定访问帐户'root'而不是root,即我用单引号字符包围root.全部使用MySQL管理员.这可能是我无法使用root登录的原因吗?
另外,有没有办法创建新帐户或重置root帐户?如前所述,我可以完全访问我的盒子.
看到这些问题
我有一个充满文件的目录,其中一些名字中有一个&符号.我想用&符号重命名所有文件,并用加号(+)替换每个&符号.我正在使用大约10k文件.这样做的最佳方法是什么?