mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
.NET: Rename workflows projects (#975)
* Renaming Microsoft.Agent.Workflows to Microsoft.Agents.AI.Workflows * Removing local settings. * Removing remining old files from merge.
This commit is contained in:
committed by
GitHub
Unverified
parent
aaf340096e
commit
647db9635a
@@ -0,0 +1,54 @@
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Reflection;
|
||||
|
||||
#if !NET
|
||||
using System.Linq;
|
||||
#endif
|
||||
|
||||
namespace Microsoft.Agents.AI.Workflows.Reflection;
|
||||
|
||||
internal static class ReflectionDemands
|
||||
{
|
||||
internal const DynamicallyAccessedMemberTypes ReflectedMethods = DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods;
|
||||
internal const DynamicallyAccessedMemberTypes ReflectedInterfaces = DynamicallyAccessedMemberTypes.Interfaces;
|
||||
|
||||
internal const DynamicallyAccessedMemberTypes RuntimeInterfaceDiscoveryAndInvocation = ReflectedMethods | ReflectedInterfaces;
|
||||
}
|
||||
|
||||
internal static class ReflectionExtensions
|
||||
{
|
||||
public static object? ReflectionInvoke(this MethodInfo method, object? target, params object?[] arguments)
|
||||
{
|
||||
#if NET
|
||||
return method.Invoke(target, BindingFlags.DoNotWrapExceptions, binder: null, arguments, culture: null);
|
||||
#else
|
||||
try
|
||||
{
|
||||
return method.Invoke(target, BindingFlags.Default, binder: null, arguments, culture: null);
|
||||
}
|
||||
catch (TargetInvocationException e) when (e.InnerException is not null)
|
||||
{
|
||||
// If we're targeting .NET Framework, such that BindingFlags.DoNotWrapExceptions
|
||||
// is ignored, the original exception will be wrapped in a TargetInvocationException.
|
||||
// Unwrap it and throw that original exception, maintaining its stack information.
|
||||
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(e.InnerException).Throw();
|
||||
throw;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
public static MethodInfo GetMethodFromGenericMethodDefinition(this Type specializedType, MethodInfo genericMethodDefinition)
|
||||
{
|
||||
Debug.Assert(specializedType.IsGenericType && specializedType.GetGenericTypeDefinition() == genericMethodDefinition.DeclaringType, "generic member definition doesn't match type.");
|
||||
#if NET
|
||||
return (MethodInfo)specializedType.GetMemberWithSameMetadataDefinitionAs(genericMethodDefinition);
|
||||
#else
|
||||
const BindingFlags All = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance;
|
||||
return specializedType.GetMethods(All).First(m => m.MetadataToken == genericMethodDefinition.MetadataToken);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user