gpt4 book ai didi

c# - 以编程方式检查 C# 中类的更改

转载 作者:太空宇宙 更新时间:2023-11-03 21:55:39 25 4
gpt4 key购买 nike

有没有办法在 C# 中检查类的大小?

我问的原因是:

我有一个例程将一个类的数据存储在一个文件中,还有一个不同的例程从同一个文件加载这个对象(类)。每个属性都按特定顺序存储,如果您更改此类,则必须提醒您这些导出/导入例程需要更改。

C++ 中的一个示例(无论这可能是多么笨拙或糟糕的编程)是以下内容:

#define PERSON_CLASS_SIZE 8
class Person
{
char *firstName;
}

...

bool ExportPerson(Person p)
{
if (sizeof(Person) != PERSON_CLASS_SIZE )
{
CatastrophicAlert("You have changed the Person class and not fixed this export routine!")
}
}

因此在编译之前你需要知道 Person 的大小,并相应地修改这个大小的导出/导入例程。

有没有办法在 C# 中做类似的事情,或者是否有其他方法可以“确保”不同的开发人员在更改类时更改导入/导出例程。

...除了明显的“只需在类里面对此进行评论,这可以保证开发人员永远不会搞砸”- 答案。

提前致谢。

最佳答案

Each attribute is stored in a specific order, and if you change this class you have to be reminded of these export/import routines needs changing.

听起来您正在编写自己的序列化机制。如果是这种情况,您可能应该以正确的顺序包括某种预期属性的“指纹”,并在读取时验证它。然后,您可以将当前指纹包含在单元测试中,如果添加了属性,该单元测试将失败。然后可以采取适当的行动(例如迁移现有数据)并更新单元测试。

仅仅检查类的大小肯定不会发现所有错误——如果您添加了一个属性并在相同的更改中删除了一个相同大小的属性,您可能会在不注意的情况下破坏数据。

关于c# - 以编程方式检查 C# 中类的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12427493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com