gpt4 book ai didi

c# - 如何验证保存/加载系统的完整性

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:18 27 4
gpt4 key购买 nike

我正在用 C# 为一个大型游戏项目制作一个保存/加载系统。

每个必须保存的类都实现了一个方法 DoSnapshot()

在方法内部,程序员必须为类中的每个字段调用一个函数 - DoSnapshot(foo) 如果要保存 foo,或者 Ignore(foo) 如果它不应该。

我有一个 DoSnapshot 方法用于许多基本类型,如 DoFloat、DoString 以及复杂类型的版本。

我有 100 多个类(class),该项目仍在开发中。

是否可以添加某种验证,以确保每个类中的所有字段都用于 Snapshot()Ignore() 调用?省略字段会导致错误。验证可以是运行时,也可以是编译时。我只想在开发时使用它,不会发布给用户。

最佳答案

您可以向需要保存的字段添加一个属性,然后在 DoSnapshot 方法中遍历类中的每个属性。当该属性具有您要查找的属性时,调用 Snapshot,否则调用 Ignore

public class SomeClass : SomeBaseClass
{
[Required]
public string Foo { get; set; }
public string Bar { get; set; }

public override void DoSnapshot()
{
var properties = this.GetType().GetProperties();
foreach (var property in properties)
{
var isRequired = property.GetCustomAttributes(typeof (RequiredAttribute), false).Length > 0;
if (isRequired)
{
// Something
}
else
{
// SomethingElse
}
}
}
}

关于c# - 如何验证保存/加载系统的完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24938001/

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