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

我有一个称为initialize的类,该类在程序的开头运行。最初,我明确地对应该实例化的所有类进行硬编码,但是我想使其更加通用,并删除硬编码的类,以便可以将类标记为关闭以进行修改。

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

然后,我想根据每个班级决定是否将其添加到队列中。通过从类内部将自身添加到队列中。问题是,除非已经实例化,否则无法将类添加到队列中。我知道可以在运行之前初始化变量,但显然不能初始化方法。因此,我坚持要弄清楚我想做的事情是不可能的。

遵循以下原则:

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#:使用System.Reflection.GetFields()显示字段元数据 - c#

This question already has answers here: Closed 8 years ago. Possible Duplicate: Find a private field with Reflection?我正在尝试使用System.Reflection.GetFields()方法显示类的字段名称。问题是,仅当字段被声明为“ pu…

将数据从ip套接字转发到蓝牙套接字。 C# - c#

我想在特定端口上监听传入的IP套接字,并使用蓝牙套接字转发它们。这可能吗?我正在使用c#,但是如果可以更轻松地编写代码,则可以使用java。 参考方案 实际上,该对象正在通过蓝牙连接使用SMB协议。我找到了一个类似于SMB协议的蓝牙配置文件,它使我能够从PC上浏览sdcard。该配置文件是OBEX FTP(文件传输配置文件),我发现了Java API。谢谢您…

Cefsharp如何获取当前的URL地址? C# - c#

我想获取当前地址,基本上将其放在文本框中。我找到了此链接,但似乎什么也听不懂。http://cefsharp.github.io/api/57.0.0/html/P_CefSharp_WinForms_ChromiumWebBrowser_Address.htm我非常感谢某人提供的代码段。这太痛苦了。我正在使用WFA。 参考方案 您必须听下面的地址更改事件并…

C#-如何使用正则表达式替换NULL字符? - c#

我有以下字符串:< \0\"\0E\0x\0t\0e\0n\0s\0i\0b\0i\0l\0i\0t\0y\0,\0v\0e\0r\0s\0i\0o\0n\0=\0\\\0\"\07\0.\00\0.\03\03\00\00\0.\00\0\\\0\"\0,\0p\0u\0b\0l\0i\0c\0K\0e\0y\0T\0o…

C#-文本框的XML子节点 - c#

我在将子节点文本放入c#的富文本框中时遇到麻烦。到目前为止,这是我尝试过的:这是XML文件:<DATA_LIST> <Customer> <Full_Name>TEST</Full_Name> <Total_Price>100</Total_Price> <Discounts>…