小编sbe*_*rli的帖子

在运行时将成员添加到动态对象

我正在探索.NET 4.0中的DynamicObject模型.应用程序是通过某种text/xml文件描述对象的应用程序,程序必须在读取该文件时创建对象.

使用DynamicObject,我们可以轻松添加成员,因为我们知道成员的名称是先验的.但是,如果我们甚至不知道要添加的成员的名称呢?有没有办法让这种动态变化?

例如,假设我需要使用成员'Property1','Property2'创建一个对象,使用'PropertyA'创建另一个对象,并使用text/XML文件描述'PropertyB'.如何根据此信息动态创建对象?

更新 我从这篇文章中得到了一些想法:http://www.codeproject.com/KB/cs/dynamicincsharp.aspx

这个实现允许我做类似以下的事情:

dynamic d = new PFDynamicChannel();
PFCouplings c = ((PFChannel)d).Coupling;
d.NewProperty = "X";
Run Code Online (Sandbox Code Playgroud)

我不想使用字典的原因是使用TryGetMember和TrySetMember方法,我可以覆盖,我可以在其中引发对程序至关重要的事件.

这样,我可以继承基类(PFChannel),但我也可以动态添加成员.但是,我的问题是我不会知道新的属性名称,直到运行时.而且,我实际上并不认为动态对象允许我动态添加新属性.如果是这种情况,我如何利用ExpandoObject来提供这种能力呢?

.net c# dynamic .net-4.0

31
推荐指数
4
解决办法
8万
查看次数

在旧版本上安装新版本的部署项目

我有一个部署项目,不允许我安装旧版本.msi文件说首先从添加/删除程序卸载程序.这不是一个好的用户体验.我该怎么做才能让安装程序先删除软件然后安装新版本?

deployment windows-installer deployment-project

24
推荐指数
3
解决办法
2万
查看次数

Dispose方法应该进行单元测试吗?

我正在使用C#.是否建议单元测试处理方法?如果是这样,为什么要测试这些方法呢?

c# unit-testing dispose

17
推荐指数
3
解决办法
1万
查看次数

C#:简单的Windows服务提供安全例外

我正在通过以下链接进行演练:http: //msdn.microsoft.com/en-us/library/zt39148a%28VS.80%29.aspx

我一点一点地跟着它.我成功安装了该服务,但是,当我尝试运行它时,会出现以下错误消息:

"MyNewService.Exe [5292]中发生了未处理的异常("System.Security.SecurityException").

我已经看到,对很多人来说,它有效,但有些人得到了这个例外,但我找不到答案.有没有人有想法?谢谢.

c# windows-services securityexception

13
推荐指数
1
解决办法
1万
查看次数

Dictionary.ElementAt方法在某些类中可见,但在其他类中不可见

我有一个字典,其中我需要迭代并进行更改.我不能使用foreach语句,因为它有时会抛出InvalidOperationException,说在收集期间无法修改集合.

我可以使用for循环,结合Dictionary.ElementAt方法,并且我在其他类中成功使用它,但是在这个特定的类中,无法找到方法ElementAt!有任何想法吗?

c# dictionary

11
推荐指数
1
解决办法
1万
查看次数

如何使用FasterXML使用注释反序列化XML

我有以下XML架构:

<Courses semester="1">
    <Course code="A231" credits="3">Intermediate A</Course>
    <Course code="A105" credits="2">Intro to A</Course>
    <Course code="B358" credits="4">Advanced B</Course>
</Courses>
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为POJO:

public class Schedule
{
   public int semester;
   public Course[] courses;
}

public class Course
{
   public String code;
   public int credits;
   public String name;
}
Run Code Online (Sandbox Code Playgroud)

这里有两件重要的事情需要注意:

  1. 课程对象不包含在标签中
  2. 一些属性是属性

我如何需要注释我的对象才能让FasterXML反序列化这个xml?

java xml pojo jackson fasterxml

11
推荐指数
1
解决办法
1万
查看次数

比较C#中的两个词典

我有两个字典,都具有相同的结构和顺序(一个应该是另一个的精确复制):Dictionary<int, ICustomInterface>我想检查它们是否相同使用SequenceEqual<>

首先,我将第一个字典转换为XML,然后将其读回以重新创建第二个字典.初步检查时,它们都是相同的.该ICustomeInterface对象的每个正确重写Equals方法.为了检查这一点,我迭代两个词典的元素并进行比较.他们都是平等的.

但是当我调用SequenceEqual:dictionary1.SequenceEqual(dictionary2);它返回false并且ICustomInterface对象的Equals方法永远不会被调用,它总是返回false.但是,如果我这样做:

for (i = 0; i < firstDictionary.Count; i++)
   firstDictionary[i].SequenceEqual(otherSub.ItemSequence[i]);
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作,每行都返回true.那么,当我简单地在字典本身上调用SequnceEqual时会发生什么?

c# linq collections comparison dictionary

10
推荐指数
2
解决办法
6598
查看次数

在哪里存储用户的界面选择?

存储接口选择的广泛接受的方式是什么,例如"不再显示此消息"设置,以及用户的任何其他特定于接口的选择?注册?设置文件?我也可以将它们存储在数据库中,因为我的程序已经可以访问一个.

编辑 我当前的程序是本地的,但是将来我想把它做成基于网络的.

user-interface user-interaction

9
推荐指数
1
解决办法
188
查看次数

第三方dll崩溃程序,没有异常抛出

我正在使用Visual Studio 2010,并在C#中编码.我有一个我在项目中使用的第三方dll.当我尝试使用特定方法时,在看似随机的场合,程序只会崩溃,没有异常抛出.会议结束.有什么方法可以追踪发生的事情吗?

c# crash visual-studio-2010

6
推荐指数
1
解决办法
4595
查看次数

如何使用指定的指数将双值格式化为E格式?

假设我有两个数字,0.0001和0.00001.

当我尝试在C#中使用"e"表示法格式化它们时,我得到以下结果:

double val = 0.0001;
Console.Out.WriteLine(val.ToString("e")) //prints 1e-4

double val2 = 0.00001;
Console.Out.WriteLine(val2.ToString("e")) //prints 1e-5
Run Code Online (Sandbox Code Playgroud)

但我想格式化0.0001和0.00001以显示相同的指数,如下所示:

0.0001-> 100e-6 0.00001-> 10e-6

我怎样才能做到这一点?

c# double formatting

4
推荐指数
1
解决办法
6799
查看次数