AppDomainSetup.AppDomainInitializer 属性

定义

获取或设置 AppDomainInitializer 委托,该委托表示在初始化应用程序域时调用的回调方法。

public:
 property AppDomainInitializer ^ AppDomainInitializer { AppDomainInitializer ^ get(); void set(AppDomainInitializer ^ value); };
public AppDomainInitializer AppDomainInitializer { get; set; }
member this.AppDomainInitializer : AppDomainInitializer with get, set
Public Property AppDomainInitializer As AppDomainInitializer

属性值

AppDomainInitializer

一个委托,表示在初始化应用程序域时调用的回调方法。

示例

The following example creates a child application domain named ChildDomain, using an AppDomainSetup object and evidence from the default application domain. 此属性 AppDomainInitializer 设置为回调方法,该方法 AppDomainInit在初始化子域时调用。 回调方法的参数放置在分配给属性 AppDomainInitializerArguments 的字符串数组中。 创建子域时,回调方法只会打印字符串。

using namespace System;
using namespace System::Security::Policy;

public ref class AppDomainInitializerExample
{
    // The callback method invoked when the child application domain is
    // initialized. The method simply displays the arguments that were
    // passed to it.
    //
public:
    static void AppDomainInit(array<String^>^ args)
    {
        Console::WriteLine("AppDomain \"{0}\" is initialized with these " +
            "arguments:", AppDomain::CurrentDomain->FriendlyName);
        for each (String^ arg in args)
        {
            Console::WriteLine("    {0}", arg);
        }
    }
};

int main()
{
    // Get a reference to the default application domain.
    //
    AppDomain^ currentDomain = AppDomain::CurrentDomain;
    
    // Create the AppDomainSetup that will be used to set up the child
    // AppDomain.
    AppDomainSetup^ domainSetup = gcnew AppDomainSetup();

    // Use the evidence from the default application domain to
    // create evidence for the child application domain.
    //
    Evidence^ evidence = gcnew Evidence(currentDomain->Evidence);

    // Create an AppDomainInitializer delegate that represents the
    // callback method, AppDomainInit. Assign this delegate to the
    // AppDomainInitializer property of the AppDomainSetup object.
    //
    AppDomainInitializer^ domainInitializer =
        gcnew AppDomainInitializer(AppDomainInitializerExample::AppDomainInit);
    domainSetup->AppDomainInitializer = domainInitializer;

    // Create an array of strings to pass as arguments to the callback
    // method. Assign the array to the AppDomainInitializerArguments
    // property.
    array<String^>^ initialArguments = {"String1", "String2"};
    domainSetup->AppDomainInitializerArguments = initialArguments;

    // Create a child application domain named "ChildDomain", using
    // the evidence and the AppDomainSetup object.
    //
    AppDomain^ appDomain = AppDomain::CreateDomain("ChildDomain",
        evidence, domainSetup);

    Console::WriteLine("Press the Enter key to exit the example program.");
    Console::ReadLine();
}

/* This code example produces the following output:

AppDomain "ChildDomain" is initialized with these arguments:
String1
String2
*/
using System;
using System.Security.Policy;

public class Example
{
    public static void Main()
    {
        // Get a reference to the default application domain.
        //
        AppDomain current = AppDomain.CurrentDomain;

        // Create the AppDomainSetup that will be used to set up the child
        // AppDomain.
        AppDomainSetup ads = new AppDomainSetup();

        // Use the evidence from the default application domain to
        // create evidence for the child application domain.
        //
        Evidence ev = new Evidence(current.Evidence);

        // Create an AppDomainInitializer delegate that represents the
        // callback method, AppDomainInit. Assign this delegate to the
        // AppDomainInitializer property of the AppDomainSetup object.
        //
        AppDomainInitializer adi = new AppDomainInitializer(AppDomainInit);
        ads.AppDomainInitializer = adi;

        // Create an array of strings to pass as arguments to the callback
        // method. Assign the array to the AppDomainInitializerArguments
        // property.
        string[] initArgs = {"String1", "String2"};
        ads.AppDomainInitializerArguments = initArgs;

        // Create a child application domain named "ChildDomain", using
        // the evidence and the AppDomainSetup object.
        //
        AppDomain ad = AppDomain.CreateDomain("ChildDomain", ev, ads);

        Console.WriteLine("Press the Enter key to exit the example program.");
        Console.ReadLine();
    }

    // The callback method invoked when the child application domain is
    // initialized. The method simply displays the arguments that were
    // passed to it.
    //
    public static void AppDomainInit(string[] args)
    {
        Console.WriteLine("AppDomain \"{0}\" is initialized with these arguments:",
            AppDomain.CurrentDomain.FriendlyName);
        foreach (string arg in args)
        {
            Console.WriteLine("    {0}", arg);
        }
    }
}

/* This code example produces the following output:

AppDomain "ChildDomain" is initialized with these arguments:
    String1
    String2
 */
open System
open System.Security.Policy

// Get a reference to the default application domain.
let current = AppDomain.CurrentDomain

// Create the AppDomainSetup that will be used to set up the child
// AppDomain.
let ads = AppDomainSetup()

// Use the evidence from the default application domain to
// create evidence for the child application domain.
let ev = Evidence current.Evidence

// The callback function invoked when the child application domain is
// initialized. The function simply displays the arguments that were
// passed to it.
let appDomainInit args =
    printfn $"AppDomain \"{AppDomain.CurrentDomain.FriendlyName}\" is initialized with these arguments:"
    for arg in args do
        printfn $"    {arg}"

// Create an AppDomainInitializer delegate that represents the
// callback method, AppDomainInit. Assign this delegate to the
// AppDomainInitializer property of the AppDomainSetup object.
let adi = AppDomainInitializer appDomainInit
ads.AppDomainInitializer <- adi

// Create an array of strings to pass as arguments to the callback
// method. Assign the array to the AppDomainInitializerArguments
// property.
let initArgs = [| "String1"; "String2" |]
ads.AppDomainInitializerArguments <- initArgs

// Create a child application domain named "ChildDomain", using
// the evidence and the AppDomainSetup object.
let ad = AppDomain.CreateDomain("ChildDomain", ev, ads)

printfn "Press the Enter key to exit the example program."
stdin.ReadLine() |> ignore

(* This code example produces the following output:

AppDomain "ChildDomain" is initialized with these arguments:
    String1
    String2
 *)
Imports System.Security.Policy

Public Class Example

    Public Shared Sub Main()

        ' Get a reference to the default application domain.
        '
        Dim current As AppDomain = AppDomain.CurrentDomain

        ' Create the AppDomainSetup that will be used to set up the child
        ' AppDomain.
        Dim ads As New AppDomainSetup()

        ' Use the evidence from the default application domain to
        ' create evidence for the child application domain.
        '
        Dim ev As Evidence = New Evidence(current.Evidence)

        ' Create an AppDomainInitializer delegate that represents the 
        ' callback method, AppDomainInit. Assign this delegate to the
        ' AppDomainInitializer property of the AppDomainSetup object.
        '
        Dim adi As New AppDomainInitializer(AddressOf AppDomainInit)
        ads.AppDomainInitializer = adi

        ' Create an array of strings to pass as arguments to the callback
        ' method. Assign the array to the AppDomainInitializerArguments
        ' property.
        Dim initArgs() As String = {"String1", "String2"}
        ads.AppDomainInitializerArguments = initArgs

        ' Create a child application domain named "ChildDomain", using 
        ' the evidence and the AppDomainSetup object.
        '
        Dim ad As AppDomain = _
            AppDomain.CreateDomain("ChildDomain", ev, ads)

        Console.WriteLine("Press the Enter key to exit the example program.")
        Console.ReadLine()
    End Sub

    ' The callback method invoked when the child application domain is
    ' initialized. The method simply displays the arguments that were
    ' passed to it.
    '
    Public Shared Sub AppDomainInit(ByVal args() As String)
        Console.WriteLine("AppDomain ""{0}"" is initialized with these arguments:", _
            AppDomain.CurrentDomain.FriendlyName)
        For Each arg As String In args
            Console.WriteLine("    {0}", arg)
        Next
    End Sub
End Class

' This code example produces the following output:
'
'AppDomain "ChildDomain" is initialized with these arguments:
'    String1
'    String2

注解

若要将信息传递给回调方法,请将字符串数组分配给 AppDomainInitializerArguments 属性。 每次初始化数组时 AppDomain 都会传递给回调方法。

回调方法在新建的应用程序域的上下文中执行。

适用于

另请参阅