Activator.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the MIT license.
  3. // See the LICENSE file in the project root for more information.
  4. using System.Diagnostics;
  5. using System.Globalization;
  6. using System.Reflection;
  7. using System.Runtime.Remoting;
  8. namespace System
  9. {
  10. /// <summary>
  11. /// Activator contains the Activation (CreateInstance/New) methods for late bound support.
  12. /// </summary>
  13. public static partial class Activator
  14. {
  15. private const BindingFlags ConstructorDefault = BindingFlags.Instance | BindingFlags.Public | BindingFlags.CreateInstance;
  16. [DebuggerHidden]
  17. [DebuggerStepThrough]
  18. public static object? CreateInstance(Type type, BindingFlags bindingAttr, Binder? binder, object?[]? args, CultureInfo? culture) =>
  19. CreateInstance(type, bindingAttr, binder, args, culture, null);
  20. [DebuggerHidden]
  21. [DebuggerStepThrough]
  22. public static object? CreateInstance(Type type, params object?[]? args) =>
  23. CreateInstance(type, ConstructorDefault, null, args, null, null);
  24. [DebuggerHidden]
  25. [DebuggerStepThrough]
  26. public static object? CreateInstance(Type type, object?[]? args, object?[]? activationAttributes) =>
  27. CreateInstance(type, ConstructorDefault, null, args, null, activationAttributes);
  28. [DebuggerHidden]
  29. [DebuggerStepThrough]
  30. public static object? CreateInstance(Type type) =>
  31. CreateInstance(type, nonPublic: false);
  32. public static ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName) =>
  33. CreateInstanceFrom(assemblyFile, typeName, false, ConstructorDefault, null, null, null, null);
  34. public static ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName, object?[]? activationAttributes) =>
  35. CreateInstanceFrom(assemblyFile, typeName, false, ConstructorDefault, null, null, null, activationAttributes);
  36. public static ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder? binder, object?[]? args, CultureInfo? culture, object?[]? activationAttributes)
  37. {
  38. Assembly assembly = Assembly.LoadFrom(assemblyFile);
  39. Type t = assembly.GetType(typeName, throwOnError: true, ignoreCase)!;
  40. object? o = CreateInstance(t, bindingAttr, binder, args, culture, activationAttributes);
  41. return o != null ? new ObjectHandle(o) : null;
  42. }
  43. }
  44. }