AssemblyBuilder.SetCustomAttribute メソッド (CustomAttributeBuilder)
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As AssemblyBuilder Dim customBuilder As CustomAttributeBuilder instance.SetCustomAttribute(customBuilder)


次のコード例は、CustomAttributeBuilder を使用して、AssemblyBuilder 内の SetCustomAttribute を使用する方法を示しています。
<AttributeUsage(AttributeTargets.All, AllowMultiple := False)> _ Public Class MyAttribute Inherits Attribute Public s As String Public x As Integer Public Sub New(s As String, x As Integer) Me.s = s Me.x = x End Sub 'New End Class 'MyAttribute Class MyApplication Public Shared Sub Main() Dim customAttribute As Type = CreateCallee(Thread.GetDomain()) Dim attributes As Object() = customAttribute.Assembly.GetCustomAttributes(True) Console.WriteLine("MyAttribute custom attribute contains : ") Dim index As Integer For index = 0 To attributes.Length - 1 If TypeOf attributes(index) Is MyAttribute Then Console.WriteLine("s : " + CType(attributes(index), MyAttribute).s) Console.WriteLine("x : " + CType(attributes(index), MyAttribute).x.ToString()) Exit For End If Next index End Sub 'Main Private Shared Function CreateCallee(domain As AppDomain) As Type Dim myAssemblyName As New AssemblyName() myAssemblyName.Name = "EmittedAssembly" Dim myAssembly As AssemblyBuilder = _ domain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run) Dim myType As Type = GetType(MyAttribute) Dim infoConstructor As ConstructorInfo = _ myType.GetConstructor(New Type(1) {GetType(String), GetType(Integer)}) Dim attributeBuilder As New CustomAttributeBuilder(infoConstructor, New Object(1) {"Hello", 2}) myAssembly.SetCustomAttribute(attributeBuilder) Dim myModule As ModuleBuilder = myAssembly.DefineDynamicModule("EmittedModule") ' Define a public class named "HelloWorld" in the assembly. Dim helloWorldClass As TypeBuilder = myModule.DefineType("HelloWorld", TypeAttributes.Public) Return helloWorldClass.CreateType() End Function 'CreateCallee End Class 'MyApplication
[AttributeUsage(AttributeTargets.All, AllowMultiple = false)] public class MyAttribute : Attribute { public String s; public int x; public MyAttribute(String s, int x) { this.s = s; this.x = x; } } class MyApplication { public static void Main() { Type customAttribute = CreateCallee(Thread.GetDomain()); object[] attributes = customAttribute.Assembly.GetCustomAttributes(true); Console.WriteLine("MyAttribute custom attribute contains : "); for(int index=0; index < attributes.Length; index++) { if(attributes[index] is MyAttribute) { Console.WriteLine("s : " + ((MyAttribute)attributes[index]).s); Console.WriteLine("x : " + ((MyAttribute)attributes[index]).x); break; } } } private static Type CreateCallee(AppDomain domain) { AssemblyName myAssemblyName = new AssemblyName(); myAssemblyName.Name = "EmittedAssembly"; AssemblyBuilder myAssembly = domain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run); Type myType = typeof(MyAttribute); ConstructorInfo infoConstructor = myType.GetConstructor(new Type[2]{typeof(String), typeof(int)}); CustomAttributeBuilder attributeBuilder = new CustomAttributeBuilder(infoConstructor, new object[2]{"Hello", 2}); myAssembly.SetCustomAttribute(attributeBuilder); ModuleBuilder myModule = myAssembly.DefineDynamicModule("EmittedModule"); // Define a public class named "HelloWorld" in the assembly. TypeBuilder helloWorldClass = myModule.DefineType("HelloWorld", TypeAttributes.Public); return(helloWorldClass.CreateType()); } }
[AttributeUsage(AttributeTargets::All,AllowMultiple=false)] public ref class MyAttribute: public Attribute { public: String^ s; int x; MyAttribute( String^ s, int x ) { this->s = s; this->x = x; } }; Type^ CreateCallee( AppDomain^ domain ) { AssemblyName^ myAssemblyName = gcnew AssemblyName; myAssemblyName->Name = "EmittedAssembly"; AssemblyBuilder^ myAssembly = domain->DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess::Run ); Type^ myType = MyAttribute::typeid; array<Type^>^temp0 = {String::typeid,int::typeid}; ConstructorInfo^ infoConstructor = myType->GetConstructor( temp0 ); array<Object^>^temp1 = {"Hello",2}; CustomAttributeBuilder^ attributeBuilder = gcnew CustomAttributeBuilder( infoConstructor,temp1 ); myAssembly->SetCustomAttribute( attributeBuilder ); ModuleBuilder^ myModule = myAssembly->DefineDynamicModule( "EmittedModule" ); // Define a public class named "HelloWorld" in the assembly. TypeBuilder^ helloWorldClass = myModule->DefineType( "HelloWorld", TypeAttributes::Public ); return (helloWorldClass->CreateType()); } int main() { Type^ customAttribute = CreateCallee( Thread::GetDomain() ); array<Object^>^attributes = customAttribute->Assembly->GetCustomAttributes( true ); Console::WriteLine( "MyAttribute custom attribute contains : " ); for ( int index = 0; index < attributes->Length; index++ ) { if ( dynamic_cast<MyAttribute^>(attributes[ index ]) ) { Console::WriteLine( "s : {0}", (dynamic_cast<MyAttribute^>(attributes[ index ]))->s ); Console::WriteLine( "x : {0}", (dynamic_cast<MyAttribute^>(attributes[ index ]))->x ); break; } } }
/** @attribute AttributeUsage(AttributeTargets.All, AllowMultiple = false) */ public class MyAttribute extends Attribute { public String s; public int x; public MyAttribute(String s, int x) { this.s = s; this.x = x; } //MyAttribute } //MyAttribute class MyApplication { public static void main(String[] args) { Type customAttribute = CreateCallee(System.Threading.Thread.GetDomain()); Object attributes[] = customAttribute.get_Assembly().GetCustomAttributes(true); Console.WriteLine("MyAttribute custom attribute contains : "); for (int index = 0; index < attributes.length; index++) { if (attributes.get_Item(index) instanceof MyAttribute) { Console.WriteLine("s : " + ((MyAttribute)attributes.get_Item(index)).s); Console.WriteLine("x : " + ((MyAttribute)attributes.get_Item(index)).x); break; } } } //main private static Type CreateCallee(AppDomain domain) { AssemblyName myAssemblyName = new AssemblyName(); myAssemblyName.set_Name("EmittedAssembly"); AssemblyBuilder myAssembly = domain.DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess.Run); Type myType = MyAttribute.class.ToType(); ConstructorInfo infoConstructor = myType.GetConstructor( new Type[]{String.class.ToType(), int.class.ToType()}); CustomAttributeBuilder attributeBuilder = new CustomAttributeBuilder( infoConstructor, new Object[]{"Hello", (Int32)2}); myAssembly.SetCustomAttribute(attributeBuilder); ModuleBuilder myModule = myAssembly.DefineDynamicModule("EmittedModule"); // Define a public class named "HelloWorld" in the assembly. TypeBuilder helloWorldClass = myModule.DefineType("HelloWorld", TypeAttributes.Public); return helloWorldClass.CreateType(); } //CreateCallee } //MyApplication


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AssemblyBuilder.SetCustomAttribute メソッド (ConstructorInfo, Byte[])
アセンブリ: mscorlib (mscorlib.dll 内)

<ComVisibleAttribute(True)> _ Public Sub SetCustomAttribute ( _ con As ConstructorInfo, _ binaryAttribute As Byte() _ )
Dim instance As AssemblyBuilder Dim con As ConstructorInfo Dim binaryAttribute As Byte() instance.SetCustomAttribute(con, binaryAttribute)
[ComVisibleAttribute(true)] public void SetCustomAttribute ( ConstructorInfo con, byte[] binaryAttribute )
[ComVisibleAttribute(true)] public: void SetCustomAttribute ( ConstructorInfo^ con, array<unsigned char>^ binaryAttribute )
/** @attribute ComVisibleAttribute(true) */ public void SetCustomAttribute ( ConstructorInfo con, byte[] binaryAttribute )
ComVisibleAttribute(true) public function SetCustomAttribute ( con : ConstructorInfo, binaryAttribute : byte[] )


binaryAttribute の書式設定方法については、ECMA Partition II のマニュアルのメタデータの仕様を参照してください。Partition II のマニュアルは、http://msdn.microsoft.com/net/ecma/http://msdn.microsoft.com/net/ecma/ および http://www.ecma-international.org/publications/standards/Ecma-335.htmhttp://www.ecma-international.org/publications/standards/Ecma-335.htm で入手できます。
RuntimeConstructorInfo は、システムが生成する特殊な型です。これは ConstructorInfo クラスから派生し、リフレクションによって得られる ConstructorInfo オブジェクトは、実際には RuntimeConstructorInfo のインスタンスです。ランタイム型の詳細については、「リフレクションのランタイム型」を参照してください。

次のコード例は、SetCustomAttribute を使用して、動的に生成するアセンブリにカスタム属性を結び付ける方法を示しています。
Imports System Imports System.Threading Imports System.Reflection Imports System.Reflection.Emit <AttributeUsage(AttributeTargets.All, AllowMultiple := False)> _ Public Class MyAttribute Inherits Attribute Public s As Boolean Public Sub New(s As Boolean) Me.s = s End Sub 'New End Class 'MyAttribute Class MyApplication Public Shared Sub Main() Dim customAttribute As Type = CreateCallee(Thread.GetDomain()) Dim attributes As Object() = customAttribute.Assembly.GetCustomAttributes(True) Console.WriteLine("MyAttribute custom attribute contains : ") Dim index As Integer For index = 0 To attributes.Length - 1 If TypeOf attributes(index) Is MyAttribute Then Console.WriteLine("s : " + CType(attributes(index), MyAttribute).s.ToString()) Exit For End If Next index End Sub 'Main Private Shared Function CreateCallee(domain As AppDomain) As Type Dim myAssemblyName As New AssemblyName() myAssemblyName.Name = "EmittedAssembly" Dim myAssembly As AssemblyBuilder = domain.DefineDynamicAssembly(myAssemblyName, _ AssemblyBuilderAccess.Run) Dim myType As Type = GetType(MyAttribute) Dim infoConstructor As ConstructorInfo = myType.GetConstructor(New Type() {GetType(Boolean)}) myAssembly.SetCustomAttribute(infoConstructor, New Byte() {01, 00, 01}) Dim myModule As ModuleBuilder = myAssembly.DefineDynamicModule("EmittedModule") ' Define a public class named "HelloWorld" in the assembly. Dim helloWorldClass As TypeBuilder = myModule.DefineType("HelloWorld", TypeAttributes.Public) Return helloWorldClass.CreateType() End Function 'CreateCallee End Class 'MyApplication
using System; using System.Threading; using System.Reflection; using System.Reflection.Emit; [AttributeUsage(AttributeTargets.All, AllowMultiple = false)] public class MyAttribute : Attribute { public bool s; public MyAttribute(bool s) { this.s = s; } } class MyApplication { public static void Main() { Type customAttribute = CreateCallee(Thread.GetDomain()); object[] attributes = customAttribute.Assembly.GetCustomAttributes(true); Console.WriteLine("MyAttribute custom attribute contains : "); for(int index=0; index < attributes.Length; index++) { if(attributes[index] is MyAttribute) { Console.WriteLine("s : " + ((MyAttribute)attributes[index]).s); break; } } } private static Type CreateCallee(AppDomain domain) { AssemblyName myAssemblyName = new AssemblyName(); myAssemblyName.Name = "EmittedAssembly"; AssemblyBuilder myAssembly = domain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Run); Type myType = typeof(MyAttribute); ConstructorInfo infoConstructor = myType.GetConstructor(new Type[]{typeof(bool)}); myAssembly.SetCustomAttribute(infoConstructor, new byte[]{01 ,00,01}); ModuleBuilder myModule = myAssembly.DefineDynamicModule("EmittedModule"); // Define a public class named "HelloWorld" in the assembly. TypeBuilder helloWorldClass = myModule.DefineType("HelloWorld", TypeAttributes.Public); return(helloWorldClass.CreateType()); } }
using namespace System; using namespace System::Threading; using namespace System::Reflection; using namespace System::Reflection::Emit; [AttributeUsage(AttributeTargets::All,AllowMultiple=false)] public ref class MyAttribute: public Attribute { public: bool s; MyAttribute( bool s ) { this->s = s; } }; Type^ CreateCallee( AppDomain^ domain ) { AssemblyName^ myAssemblyName = gcnew AssemblyName; myAssemblyName->Name = "EmittedAssembly"; AssemblyBuilder^ myAssembly = domain->DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess::Run ); Type^ myType = MyAttribute::typeid; array<Type^>^temp0 = {bool::typeid}; ConstructorInfo^ infoConstructor = myType->GetConstructor( temp0 ); array<Byte>^temp1 = {01,00,01}; myAssembly->SetCustomAttribute( infoConstructor, temp1 ); ModuleBuilder^ myModule = myAssembly->DefineDynamicModule( "EmittedModule" ); // Define a public class named "HelloWorld" in the assembly. TypeBuilder^ helloWorldClass = myModule->DefineType( "HelloWorld", TypeAttributes::Public ); return (helloWorldClass->CreateType()); } int main() { Type^ customAttribute = CreateCallee( Thread::GetDomain() ); array<Object^>^attributes = customAttribute->Assembly->GetCustomAttributes( true ); Console::WriteLine( "MyAttribute custom attribute contains : " ); for ( int index = 0; index < attributes->Length; index++ ) { if ( dynamic_cast<MyAttribute^>(attributes[ index ]) ) { Console::WriteLine( "s : {0}", (dynamic_cast<MyAttribute^>(attributes[ index ]))->s ); break; } } }
import System.*; import System.Threading.*; import System.Reflection.*; import System.Reflection.Emit.*; /** @attribute AttributeUsage(AttributeTargets.All, AllowMultiple = false) */ public class MyAttribute extends Attribute { public boolean s; public MyAttribute(boolean s) { this.s = s; } //MyAttribute } //MyAttribute class MyApplication { public static void main(String[] args) { Type customAttribute = CreateCallee(System.Threading.Thread.GetDomain()); Object attributes[] = customAttribute.get_Assembly().GetCustomAttributes(true); Console.WriteLine("MyAttribute custom attribute contains : "); for (int index = 0; index < attributes.length; index++) { if (attributes.get_Item(index) instanceof MyAttribute) { Console.WriteLine("s : " + (System.Boolean) ((MyAttribute)attributes.get_Item(index)).s); break; } } } //main private static Type CreateCallee(AppDomain domain) { AssemblyName myAssemblyName = new AssemblyName(); myAssemblyName.set_Name("EmittedAssembly"); AssemblyBuilder myAssembly = domain.DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess.Run); Type myType = MyAttribute.class.ToType(); ConstructorInfo infoConstructor = myType.GetConstructor(new Type[] { boolean.class.ToType() }); myAssembly.SetCustomAttribute(infoConstructor, new ubyte[] { 1, 0, 1 }); ModuleBuilder myModule = myAssembly.DefineDynamicModule("EmittedModule"); // Define a public class named "HelloWorld" in the assembly. TypeBuilder helloWorldClass = myModule.DefineType("HelloWorld", TypeAttributes.Public); return helloWorldClass.CreateType(); } //CreateCallee } //MyApplication


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AssemblyBuilder.SetCustomAttribute メソッド
Weblioに収録されているすべての辞書からAssemblyBuilder.SetCustomAttributeを検索する場合は、下記のリンクをクリックしてください。

- AssemblyBuilder.SetCustomAttributeのページへのリンク