ConstructorBuilder.AddDeclarativeSecurity メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ConstructorBuilder.AddDeclarativeSecurity メソッドの意味・解説 

ConstructorBuilder.AddDeclarativeSecurity メソッド

このコンストラクタ宣言セキュリティ追加します

名前空間: System.Reflection.Emit
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub AddDeclarativeSecurity ( _
    action As SecurityAction, _
    pset As PermissionSet _
)
Dim instance As ConstructorBuilder
Dim action As SecurityAction
Dim pset As PermissionSet

instance.AddDeclarativeSecurity(action, pset)
public void AddDeclarativeSecurity (
    SecurityAction action,
    PermissionSet pset
)
public:
void AddDeclarativeSecurity (
    SecurityAction action, 
    PermissionSet^ pset
)
public void AddDeclarativeSecurity (
    SecurityAction action, 
    PermissionSet pset
)
public function AddDeclarativeSecurity (
    action : SecurityAction, 
    pset : PermissionSet
)

パラメータ

action

DemandAssert など、実行するセキュリティ アクション

pset

アクション適用する一連のアクセス許可

例外例外
例外種類条件

ArgumentOutOfRangeException

action無効です。RequestMinimum、RequestOptional、および RequestRefuse が無効です。

InvalidOperationException

格納している型が、CreateType を使用して既に作成されています。

または

アクセス許可セット pset に、既に AddDeclarativeSecurity追加されたアクション含まれています。

ArgumentNullException

psetnull 参照 (Visual Basic では Nothing) です。

解説解説

AddDeclarativeSecurity は、呼び出すたびにセキュリティ アクション (DemandAssertDeny など) とそのアクション適用するアクセス許可指定して複数呼び出すことができます

AddDeclarativeSecurity使用方法については、次のコード例参照してください

Dim myMethodBuilder As MethodBuilder = Nothing

Dim myCurrentDomain As AppDomain = AppDomain.CurrentDomain
' Create assembly in current CurrentDomain
Dim myAssemblyName As New
 AssemblyName()
myAssemblyName.Name = "TempAssembly"
' Create a dynamic assembly
myAssemblyBuilder = _
      myCurrentDomain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.RunAndSave)
' Create a dynamic module in the assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule")
Dim myFieldInfo As FieldInfo = _
    myModuleBuilder.DefineUninitializedData("myField",
 2, FieldAttributes.Public)
' Create a type in the module
Dim myTypeBuilder As TypeBuilder = _
    myModuleBuilder.DefineType("TempClass", TypeAttributes.Public)
Dim myGreetingField As FieldBuilder = _
   myTypeBuilder.DefineField("Greeting", GetType(String),
 FieldAttributes.Public)
Dim myConstructorArgs As Type() = {GetType(String)}
' Define a constructor of the dynamic class.
Dim myConstructor As ConstructorBuilder = _
    myTypeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard,
 _
                                    myConstructorArgs)
Dim myPset As New PermissionSet(PermissionState.Unrestricted)
' Add declarative security to the constructor.
Console.WriteLine("Adding declarative security to the constructor.....")
Console.WriteLine("The Security action to be taken is ""DENY""
 and" + _
                  " Permission set is ""UNRESTRICTED"".")
myConstructor.AddDeclarativeSecurity(SecurityAction.Deny, myPset)
Dim myMethodAttributes As MethodAttributes
 = myConstructor.Attributes
Dim myAttributeType As Type = GetType(MethodAttributes)
Dim myAttribValue As Integer
 = CInt(myMethodAttributes)
If Not myAttributeType.IsEnum Then
   Console.WriteLine("This is not an Enum")
End If
Dim myFieldInfo1 As FieldInfo() = myAttributeType.GetFields(BindingFlags.Public
 Or _
                                                             BindingFlags.Static)
Console.WriteLine("The Field info names of the Attributes for
 the constructor are:")
Dim i As Integer
For i = 0 To myFieldInfo1.Length - 1
   Dim myFieldValue As Integer
 = CType(myFieldInfo1(i).GetValue(Nothing), Int32)
   If(myFieldValue And myAttribValue) = myFieldValue
 Then
      Console.WriteLine("   " + myFieldInfo1(i).Name)
   End If
Next i

Dim myType2 As Type = myConstructor.DeclaringType
Console.WriteLine("The declaring type is : " + myType2.ToString())
Dim myParameterBuilder1 As ParameterBuilder
 = _
    myConstructor.DefineParameter(1, ParameterAttributes.Out, "My
 Parameter Name1")
Console.WriteLine("The name of the parameter is : "
 + myParameterBuilder1.Name)
If myParameterBuilder1.IsIn Then
   Console.WriteLine(myParameterBuilder1.Name + " is Input parameter.")
Else
   Console.WriteLine(myParameterBuilder1.Name + " is not Input
 Parameter.")
End If
Dim myParameterBuilder2 As ParameterBuilder
 = _
    myConstructor.DefineParameter(1, ParameterAttributes.In, "My
 Parameter Name2")
Console.WriteLine("The Parameter name is : " + myParameterBuilder2.Name)
If myParameterBuilder2.IsIn Then
   Console.WriteLine(myParameterBuilder2.Name + " is Input parameter.")
Else
   Console.WriteLine(myParameterBuilder2.Name + " is not Input
 Parameter.")
End If
MethodBuilder myMethodBuilder=null;

AppDomain myCurrentDomain = AppDomain.CurrentDomain;
// Create assembly in current CurrentDomain
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "TempAssembly";
// Create a dynamic assembly
myAssemblyBuilder = myCurrentDomain.DefineDynamicAssembly
   (myAssemblyName, AssemblyBuilderAccess.RunAndSave);
// Create a dynamic module in the assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule");
FieldInfo myFieldInfo =
   myModuleBuilder.DefineUninitializedData("myField",2,FieldAttributes.Public);
// Create a type in the module
TypeBuilder myTypeBuilder = myModuleBuilder.DefineType("TempClass",TypeAttributes.Public);
FieldBuilder myGreetingField = myTypeBuilder.DefineField("Greeting",
   typeof(String), FieldAttributes.Public);
Type[] myConstructorArgs = { typeof(String) };
// Define a constructor of the dynamic class.
ConstructorBuilder myConstructor = myTypeBuilder.DefineConstructor(
   MethodAttributes.Public, CallingConventions.Standard, myConstructorArgs);
PermissionSet myPset = new PermissionSet(PermissionState.Unrestricted);
// Add declarative security to the constructor.
Console.WriteLine("Adding declarative security to the constructor.....");
Console.WriteLine("The Security action to be taken is \"DENY\" and"
 +
   " Permission set is \"UNRESTRICTED\".");
myConstructor.AddDeclarativeSecurity(SecurityAction.Deny,myPset);
MethodAttributes myMethodAttributes = myConstructor.Attributes;
Type myAttributeType = typeof(MethodAttributes);
int myAttribValue = (int) myMethodAttributes;
if(! myAttributeType.IsEnum)
{
   Console.WriteLine("This is not an Enum");
}
FieldInfo[] myFieldInfo1 = myAttributeType.GetFields(BindingFlags.Public | BindingFlags.Static);
Console.WriteLine("The Field info names of the Attributes for
 the constructor are:");
for (int i = 0; i < myFieldInfo1.Length;
 i++)
{
   int myFieldValue = (Int32)myFieldInfo1[i].GetValue(null);
   if ((myFieldValue & myAttribValue) == myFieldValue)
   {
      Console.WriteLine("   " + myFieldInfo1[i].Name);
   }
}

Type myType2 = myConstructor.DeclaringType;
Console.WriteLine("The declaring type is : "+myType2.ToString());
ParameterBuilder myParameterBuilder1 =
   myConstructor.DefineParameter(1,  ParameterAttributes.Out, "My Parameter
 Name1");
Console.WriteLine("The name of the parameter is : " +
   myParameterBuilder1.Name);
if(myParameterBuilder1.IsIn)
   Console.WriteLine(myParameterBuilder1.Name +" is Input parameter.");
else
   Console.WriteLine(myParameterBuilder1.Name +" is not Input Parameter.");
ParameterBuilder myParameterBuilder2 =
   myConstructor.DefineParameter(1, ParameterAttributes.In, "My Parameter Name2");
Console.WriteLine("The Parameter name is : " +
   myParameterBuilder2.Name);
if(myParameterBuilder2.IsIn)
   Console.WriteLine(myParameterBuilder2.Name +" is Input parameter.");
else
   Console.WriteLine(myParameterBuilder2.Name + " is not Input Parameter.");
MethodBuilder^ myMethodBuilder = nullptr;

AppDomain^ myCurrentDomain = AppDomain::CurrentDomain;
// Create assembly in current CurrentDomain
AssemblyName^ myAssemblyName = gcnew AssemblyName;
myAssemblyName->Name = "TempAssembly";
// Create a dynamic assembly
myAssemblyBuilder = myCurrentDomain->DefineDynamicAssembly(
   myAssemblyName, AssemblyBuilderAccess::RunAndSave );
// Create a dynamic module in the assembly.
myModuleBuilder = myAssemblyBuilder->DefineDynamicModule( "TempModule"
 );
FieldInfo^ myFieldInfo =
   myModuleBuilder->DefineUninitializedData( "myField", 2, FieldAttributes::Public
 );
// Create a type in the module
TypeBuilder^ myTypeBuilder = myModuleBuilder->DefineType( "TempClass",
 TypeAttributes::Public );
FieldBuilder^ myGreetingField = myTypeBuilder->DefineField( "Greeting"
,
   String::typeid, FieldAttributes::Public );
array<Type^>^myConstructorArgs = {String::typeid};
// Define a constructor of the dynamic class.
ConstructorBuilder^ myConstructor = myTypeBuilder->DefineConstructor(
   MethodAttributes::Public, CallingConventions::Standard, myConstructorArgs );
PermissionSet^ myPset = gcnew PermissionSet( PermissionState::Unrestricted );
// Add declarative security to the constructor.
Console::WriteLine( "Adding declarative security to the constructor....."
 );
Console::WriteLine( "The Security action to be taken is \"DENY\" and"
 +
   " Permission set is \"UNRESTRICTED\"."
 );
myConstructor->AddDeclarativeSecurity( SecurityAction::Deny, myPset );
MethodAttributes myMethodAttributes = myConstructor->Attributes;
Type^ myAttributeType = MethodAttributes::typeid;
int myAttribValue = (int)myMethodAttributes;
if (  !myAttributeType->IsEnum )
{
   Console::WriteLine( "This is not an Enum" );
}
array<FieldInfo^>^myFieldInfo1 = myAttributeType->GetFields( static_cast<BindingFlags>(BindingFlags::Public
 | BindingFlags::Static) );
Console::WriteLine( "The Field info names of the Attributes for
 the constructor are:" );
for ( int i = 0; i < myFieldInfo1->Length;
 i++ )
{
   int myFieldValue =  *dynamic_cast<Int32^>(myFieldInfo1[
 i ]->GetValue( nullptr ));
   if ( (myFieldValue & myAttribValue) == myFieldValue )
   {
      Console::WriteLine( "   {0}", myFieldInfo1[ i ]->Name );
   }
}

Type^ myType2 = myConstructor->DeclaringType;
Console::WriteLine( "The declaring type is : {0}", myType2 );
ParameterBuilder^ myParameterBuilder1 =
   myConstructor->DefineParameter( 1, ParameterAttributes::Out, "My Parameter
 Name1" );
Console::WriteLine( "The name of the parameter is : {0}",
   myParameterBuilder1->Name );
if ( myParameterBuilder1->IsIn )
      Console::WriteLine( "{0} is Input parameter.", myParameterBuilder1->Name
 );
else
      Console::WriteLine( "{0} is not Input Parameter.", myParameterBuilder1->Name
 );
ParameterBuilder^ myParameterBuilder2 =
   myConstructor->DefineParameter( 1, ParameterAttributes::In, "My Parameter
 Name2" );
Console::WriteLine( "The Parameter name is : {0}",
   myParameterBuilder2->Name );
if ( myParameterBuilder2->IsIn )
      Console::WriteLine( "{0} is Input parameter.", myParameterBuilder2->Name
 );
else
      Console::WriteLine( "{0} is not Input Parameter.", myParameterBuilder2->Name
 );
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ConstructorBuilder クラス
ConstructorBuilder メンバ
System.Reflection.Emit 名前空間



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

ConstructorBuilder.AddDeclarativeSecurity メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ConstructorBuilder.AddDeclarativeSecurity メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS