小编Cas*_*rah的帖子

如何检查是否已调用静态构造函数?

我有一些类来缓存数据库中的数据,这些类在调用静态构造函数时会加载数据.

我需要在所有这些类中调用静态Reload方法,除了那些尚未初始化的类.

例如:City缓存数据库中的数据

public class City
{
    public City Get(string key)
    {
        City city;
        FCities.TryGetValue(key, out city);
        return city;
    }
    private static Dictionary<string, City> FCities;

    static City()
    {
        LoadAllCitiesFromDatabase();
    }

    public static void Reload()
    {
        LoadAllCitiesFromDatabase();
    }

    private static void LoadAllCitiesFromDatabase()
    {
        // Reading all citynames from database (a very slow operation)
        Dictionary<string, City> loadedCities = new Dictionary<string, City>();
        ...
        FCities = loadedCities;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是City可能尚未使用(它可能不会在此服务中使用),因此没有理由从数据库加载它.

我重新加载所有方法看起来很像这样:

public static class ReloadAll
{
    public static void Do()
    {
        foreach (Type classType …
Run Code Online (Sandbox Code Playgroud)

c# static-constructor

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

标签 统计

c# ×1

static-constructor ×1