c# - 有初始化的设计模式吗? C#

标签 c# reflection singleton

我有一个名为initialize 的类,它在程序开始时运行。最初,我明确地硬编码了它应该实例化的所有类,但我想让它更通用并删除硬编码的类,以便我可以将类标记为关闭以进行修改。

我的第一个想法是创建一个类型队列,我的初始化类将循环遍历并实例化队列中的所有类型。

然后我想根据每个类来决定是否应该将其添加到队列中。通过从类内部将其自身添加到队列中。问题是我无法将类添加到队列中,除非它已经被实例化。我知道变量可以在运行之前初始化,但显然不能初始化方法。所以我一直在思考我想做的事情是否可行。

大致如下:

MyClass
{

 initalize.instance.Enqueue(typeof(MyClass));
}

最佳答案

我的意思是这样的。

    public static class Initializer
    {
        public static void Initialize()
        {
            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
                foreach (var type in assembly.GetTypes())
                    if (type.IsDefined(typeof(InitializeAttribute), true))
                        Console.WriteLine("Need to initialize {0}", type.FullName);
        }
    }

    [AttributeUsage(AttributeTargets.Class)]
    public sealed class InitializeAttribute : Attribute
    { 
    }

    [Initialize]
    public sealed class ToBeInitialized
    { 
    }

关于c# - 有初始化的设计模式吗? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12323633/

相关文章:

java - LambdaMetaFactory 装箱/拆箱参数和返回类型

c# - Type.GetMethod with a Generic overload - Get Generic MethodInfo without looping through all Methods

c++ - 在什么情况下,单例设计模式可能会生成同一个单例类的多个实例?

java - EJB 中@Stateless 相对于@Singleton 的真实用例是什么

java - 选择当前类的方法而不是继承类的方法

java - 关闭 Java EE 应用程序时内存泄漏未卸载单例

c# - 为混合代码 DLL 中_caught_ SEH 异常生成小型转储

c# - 在c#中检查flowLayoutPanel是否为空

c# - 串行端口上的十六进制转换错误

c# - 结合 C# 和 C 的优点/缺点