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

时间:2014-01-06 13:35:32

标签: c# custom-attributes

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

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

检查仅取决于理论上可以在建造后直接获得的数据。

如果设置了属性,我不需要运行代码。无论如何它都可以运行。我将检查属性是否手动设置。

属性类上的静态初始值设定器不执行任何操作,因为只有在检查自定义属性时才会运行实际的初始值设定项。

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

2 个答案:

答案 0 :(得分:1)

请记住,正在使用/引用类库终结的开发人员决定在何时执行一段代码。您的类库可以公开初始化方法,并指示他需要首先调用该方法的开发人员。

如果您只想要执行一次代码,则需要遵循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;
        }
    }

}

答案 1 :(得分:-1)

你在找这个:

public class MyClass
{
    private static string _prop1;
    public static string Prop1
    {
        get
        {
            // Your initial code to run whenever value is retrived (like........... something = Prop2;)
            // { 
            //   code block
            // }
            return _prop1;
        }
        set
        {
            // Your initial code to run whenever something is assigned (like........... Prop2 = something;)
            // { 
            //   code block
            // }
            _prop1 = value;
        }
    }

    private static string _prop2;
    public static string Prop2
    {
        get
        {
            // Your initial code to run whenever value is retrived (like........... something = Prop2;)
            // { 
            //   code block
            // }
            return _prop2;
        }
        set
        {
            // Your initial code to run whenever something is assigned (like........... Prop2 = something;)
            // { 
            //   code block
            // }
            _prop2 = value;
        }
    }
}