V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bthulu
V2EX  ›  C#

.net6 里有没有什么办法能自动调用静态构造函数吗?

  •  
  •   bthulu · 2022-05-12 22:37:11 +08:00 · 1561 次点击
    这是一个创建于 920 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在写一个通用调度策略, 在静态构造方法里将这个策略类注册到注册器. 我知道可以在注册器实例中主动添加这个策略类, 但是这样如果我新加一个策略类, 岂不是还得去改这个注册器类吗? 所以我在想能不能实现 java 那样的, 程序运行时自动调用类的静态构造方法? java 里我可以指定个包名, 然后找到指定驱动包下的所有类, 全部 class.forname 一下就好了. 但是我 google 到的都是说 C#的静态构造方法只有在创建实例或者引用类的静态属性时才会被调用. 问题是策略类要跟策略配置项配合用的, 要在配置项用到的时候再创建, 同时这个类也没有任何静态属性. 难搞哦

    3 条回复    2022-05-13 19:51:01 +08:00
    yicong135
        1
    yicong135  
       2022-05-13 09:02:09 +08:00
    C# Lazy 是不是你想要的
    forgottencoast
        3
    forgottencoast  
       2022-05-13 19:51:01 +08:00
    "java 里我可以指定个包名, 然后找到指定驱动包下的所有类, 全部 class.forname 一下就好了."
    .Net 6 也可以这样做啊,而且大部分都是这样实现的,真正实现的时候都会做一个过滤,比如实现了特定接口的,或者标记了特定 Attribute 的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3244 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 12:41 · PVG 20:41 · LAX 04:41 · JFK 07:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.