Tag: C#的

.net 3.5中的深度/recursion对象比较的C#实现

我正在寻找一个C#特定的开源(或源代码可用)实现的recursion,或深入的对象比较。 我目前有两个活动对象的图表,我正在寻找比较对象,比较的结果是一组图中的差异。 对象是运行时已知的一组类的实例(但不一定在编译时)。 有一个具体的要求是能够从图中的差异映射回到包含差异的对象。

在构造函数中应该做多less工作?

如果操作可能需要一段时间才能在构造函数中执行,或者应该构build对象,然后再进行初始化。 例如,当构造表示目录结构的对象时,应该在构造函数中完成对象及其子项的填充。 显然,目录可以包含目录,而目录又可以包含目录等等。 这个优雅的解决scheme是什么?

为什么我不能在抽象的C#类上创build抽象构造函数?

我正在创build一个抽象类。 我希望我的每个派生类都被迫实现特定的构造函数签名。 因此,我做了我想要强迫他们实施的方法,我做了一个抽象的方法。 public abstract class A { abstract A(int a, int b); } 不过,我收到一条消息,指出抽象修饰符在这个项目上是无效的。 我的目标是强制这样的代码。 public class B : A { public B(int a, int b) : base(a, b) { //Some other awesome code. } } 这是所有的C#.NET代码。 谁能帮我吗? 更新1 我想添加一些东西。 结果是这个。 private A() { } protected A(int a, int b) { //Code } 这就是一些人所说的,默认是私有的,而类需要实现一个构造函数。 […]

使属性反序列化,但不能用json.net序列化

我们有一些configuration文件是通过使用Json.net序列化C#对象生成的。 我们希望将序列化类的一个属性从简单的枚举属性迁移到类属性中。 一个简单的方法是将旧的enum属性留在类中,并且在我们加载configuration时安排Json.net读这个属性,但是当我们下一个序列化对象的时候不要再保存它。 我们将分别处理从旧枚举中生成新类。 有没有简单的方法来标记(例如属性)的C#对象的属性,以便Json.net将只在序列化时忽略它,而是在反序列化时注意它呢?

无法从父类转换为子类

我想从父类转换到一个子类,但我得到一个InvalidCastException。 子类只有一个inttypes的属性。 有谁知道我需要做什么?

从列表中获取独特的项目

从列表中获取所有不同项目的最快/最有效的方法是什么? 我有一个List<string> ,可能有多个重复的项目,只需要列表中的唯一值。

用reflection调用静态方法

我在命名空间mySolution.Macros有几个静态类,如 static class Indent{ public static void Run(){ // implementation } // other helper methods } 所以我的问题是如何在reflection的帮助下调用这些方法? 如果方法不是静态的,那么我可以这样做: var macroClasses = Assembly.GetExecutingAssembly().GetTypes().Where( x => x.Namespace.ToUpper().Contains("MACRO") ); foreach (var tempClass in macroClasses) { var curInsance = Activator.CreateInstance(tempClass); // I know have an instance of a macro and will be able to run it // using reflection […]

replacestring中给定索引的字符?

string没有ReplaceAt() ,我正在翻倒一点如何做一个体面的function,做我所需要的。 我想CPU的成本很高,但string的大小很小,所以一切都好

将零填充添加到string

如何添加“0”填充string,使我的string长度始终是4? 例 If input "1", 3 padding is added = 0001 If input "25", 2 padding is added = 0025 If input "301", 1 padding is added = 0301 If input "4501", 0 padding is added = 4501

自动编号与entity framework

我想循环一个对象的集合,并将它们全部添加到表中。 目标表有一个自动增量字段。 如果我添加一个对象没有问题。 如果我添加两个主键为零的对象,则entity framework将失败。 我可以手动指定主键,但尝试EF的全部重点是让生活更轻松,不会更复杂。 下面是代码和接收到的exception。 foreach (Contact contact in contacts) { Instructor instructor = InstructorFromContact(contact); context.AddToInstructors(instructor); } try { context.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } 错误是: System.InvalidOperationException :数据库的更改已成功提交,但更新对象上下文时发生错误。 ObjectContext可能处于不一致的状态。 内部exception消息:由于对象的键值与ObjectStateManager中的另一个对象冲突,因此AcceptChanges无法继续。 在调用AcceptChanges之前,确保键值是唯一的。 在System.Data.Objects.ObjectContext.SaveChanges(SaveOptions选项) 在System.Data.Objects.ObjectContext.SaveChanges()在DataMigration.Program.CopyInstructors()在C:\ Projects \ DataMigration \ Program.cs中:第52行