Недавно я перевел проект, над которым я работаю с .NET 3.5 на .NET 4. Я использую C#, управляемый C++ и неуправляемый C++.Управляемый C++ Статический конструктор, не вызываемый .net4
В одном из моего Managed C++() Я-взаимодействия имеет статический конструктор:
public ref class StaticPool : public BaseStaticPools
{
public:
static StaticPool()
{
InitializePools();
}
static Poolable^ Dequeue()
{
return (Poolable^)Dequeue(Poolable::typeid);
}
private:
static void InitializePools()
{
BaseStaticPools::CreatePool(Poolable::typeid);
}
};
В .NET 3.5 раз Dequeue()
были вызваны в первый раз это будет вызвать статическую инициализацию, которая работает статический конструктор. Как только я перешел на .NET 4.0, статический конструктор никогда не вызывался.
Я знаю, что были внесены изменения в статические инициализации в .NET 4.0, но, согласно всем, что я прочитал, он должен работать нормально.
"Управляемый C++", как и в [управляемых расширений для C++] (http://msdn.microsoft.com/en-us/library/ aa712574 (v = vs.71) .aspx) или [C++/CLI] (http://msdn.microsoft.com/en-us/magazine/cc163852.aspx)? –
Управляемый C++ - это только .NET 1.x, он был заменен C++/CLI. Я исправил ваши теги. –
@Samuel: поскольку код имеет '^' для дескрипторов вместо '__gc *', он не может быть управляемыми расширениями для C++. –