相关疑难解决方法(0)

C#中的GetHashCode指南

我在Essential C#3.0和.NET 3.5书中读到:

GetHashCode()在特定对象的生命周期内的返回应该是常量(相同的值),即使对象的数据发生了变化.在许多情况下,您应该缓存方法返回以强制执行此操作.

这是一个有效的指导方针吗?

我在.NET中尝试了几种内置类型,但它们的行为并不像这样.

.net c# hashcode

134
推荐指数
7
解决办法
6万
查看次数

实现"脏"标志功能的不同方法

几乎每个程序员一生都做过一次:如果变量的值发生变化,设置一些标志.总有很多属性,如果有变化,你想跟踪

  1. 在任何财产
  2. 在特定的财产
  3. 或者在一些属性中

除了在每次属性更改时更新的标准对象范围脏标志之外,我对以上情况实现"脏标志"功能的不同方式感兴趣.必须有比在每个二传手中加入"dirty = true"更好的东西:它看起来很丑陋而且是一项繁琐的工作.

design-patterns

44
推荐指数
5
解决办法
2万
查看次数

序列化同一个对象会产生不同的流吗?

是否有任何情况下序列化相同的对象可能会产生不同的流(假设其中一个格式化内置的.NET用于两个序列化)?

这在下面的讨论中提出了这个职位.有人声称这可能发生,但没有提供具体的解释,所以我想知道是否有人可以解释这个问题?

.net serialization

5
推荐指数
1
解决办法
562
查看次数

隐式检测对象的属性变化

我正在尝试实现一个非常简单且更重要的是可选的对象跟踪系统,类似于实体框架如何跟踪对象更改(更改跟踪在实体框架中如何工作)。

我有一个所有其他对象都继承自的基类。该类有 1 个称为“modified”的布尔字段。对此的显式解决方案是更新其他类的所有属性上的每个 setter,以modified = true在触发 setter 时进行设置。此解决方案已在此处详细介绍创建一个事件来监视变量的更改

我想要一个更隐式的解决方案。我有很多对象和很多属性。更新设置器非常混乱。我不想直接模仿实体框架的工作方式,因为它对于我当前的要求来说太昂贵了。我想要一个可以循环检查的对象列表modified == true。这使我可以选择跟踪对象并快速检查它们是否已更改,而无需触发每个单独对象的更新。有没有一种方法可以让我在所有属性 getter 和 setter 上隐式设置某种侦听器?

我知道这段代码不存在,但是 .NET 是否有办法监视对象以查看它是否已更改。

[OnChange=ObjectChanged()] //maybe this way
public class MyClass
{
    bool modified {get; set;}
    public MyClass() : OnChange(ObjectChanged) //or this way
    {

    }

    private void ObjectChanged()
    {
        modified = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

正如我所提到的,我不想更新每个设置器或复制实体框架的功能。

c#

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

标签 统计

.net ×2

c# ×2

design-patterns ×1

hashcode ×1

serialization ×1