Блок неленивой статической инициализации в C #

Мне нужно запустить некоторый код, чтобы зарегистрировать тип для фабричного шаблона. Я бы сделал это на Java со статическим блоком инициализации или на C ++ со статическим конструктором.

Как это сделать в C #? Этот статический конструктор запускается лениво, и, поскольку тип никогда не упоминается в коде, никогда не регистрируется.

РЕДАКТИРОВАТЬ: Я пробовал тест, чтобы увидеть, как работает код регистрации. Хотя это, похоже, не работает.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

[assembly: AssemblyTest.RegisterToFactory("hello, world!")]

namespace AssemblyTest
{
    [AttributeUsage(AttributeTargets.Assembly, Inherited = false, AllowMultiple = true)]
    sealed class RegisterToFactoryAttribute : Attribute
    {
        public RegisterToFactoryAttribute(string name)
        {
            Console.WriteLine("Registered {0}", name);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

Ничего не печатается.

5
задан Jonathan Sternberg 21 December 2010 в 05:33
поделиться