0
私のカスタムコントロールライブラリの各メソッドを実行時に初期化できるカスタム属性を作成しようとしています。私は、これは次のようにリフレクションを使用して仕事を得るために管理している:C++/CLIの属性
InitOnload::initialise()
{
// get a list of types which are marked with the InitOnLoad attribute
array<System::Reflection::Assembly^>^ assemblies = System::AppDomain::CurrentDomain->GetAssemblies();
for each(System::Reflection::Assembly^ assembly in assemblies)
{
try
{
System::Type^ type = System::Type::GetType("INITONLOAD.InitOnload");
array<Object^>^ attributes = assembly->GetCustomAttributes(type, false);
if(attributes->Length > 0)
{
auto field =
type->GetFields(
System::Reflection::BindingFlags::Static |
System::Reflection::BindingFlags::Public |
System::Reflection::BindingFlags::NonPublic);
}
}
catch (...)
{
}
}
}
foo2は、起動時に初期化されますが、それは上記InitOnloadと同じ名前空間で定義されている場合のみ。
[assembly: InitOnload()];
public ref class foo2 : public System::Attribute
{
public:
foo2()
{
};
};
私は別のカスタムコントロールライブラリのメソッドをinitilaiseしようとした場合、それはinitilaliseしません下記foo2はinitilaiseしません:
[assembly: INITONLOAD::InitOnload()];
public ref class foo : public System::Attribute
{
public:
foo()
{
};
};
任意のアイデア?
誰かが最初にアセンブリをロードする必要があります。 –