c# - 在类库中运行初始化代码是使用任何属性

标签 c# custom-attributes

所以我想要一个只暴露2个属性的类库。如果用户代码在任何方法上使用这些属性,我希望运行一些代码(最好是运行时的第一件事)。

目的是对设置属性的方法进行一些检查,并在检查失败时提醒用户。

检查仅取决于理论上应该在构建后立即可用的数据。

我不需要仅在设置了属性后才运行代码。无论如何它都可以运行。我将检查是否在任何地方手动设置了属性。

属性类上的静态初始化程序什么都不做,因为实际的初始化程序仅在您检查自定义属性时运行。

我想问题是:如果我的类库被引用,如果我不能使用静态构造函数,我该如何运行一次代码,因为我的类库只公开属性?

最佳答案

请记住,使用/引用类库的开发人员最终可以决定一段代码在什么时候执行。您的类库可以公开一个Initialization 方法,并且您指示开发人员他需要先调用该方法。

如果你想让一些代码只执行一次,你需要遵循Singleton设计模式。

using System;

public class Class1
{
    private static readonly Class1 _myInstance = new Class1();

    private Class1()
    {
        // do your once custom code here
        // and possible do reflection to check if your custom attributes
        // are in use

    }

    public static Class1 GetInstance()
    {
        get {
            return _myInstance;
        }
    }

}

关于c# - 在类库中运行初始化代码是使用任何属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951171/

相关文章:

c# - 如何更改 Xamarin 导航标题中所有工具栏项目的字体

c# - 出现错误 : No value given for one or more required parameters

xhtml - 自定义 HTML 属性的正确方法

php - Magento 2.0 - 如何获取客户多选属性选项值

c# - 将逗号分隔的列表绑定(bind)到 asp.net web api 中的 List<int>

c# - 从谷歌翻译方括号中拆分字符串

c# - 在c#中调用方法时如何执行属性

javascript - 访问多个 webpart 实例的 HTML5 自定义数据属性

HTML5 自定义属性——我为什么要使用它们?

c# - ASP.Net MVC 5 子目录捆绑问题