gpt4 book ai didi

c# - 在c#中调用方法时如何执行属性

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:20 24 4
gpt4 key购买 nike

我有一个方法。

[AppAuthorize]
public ActionResult StolenCar(object claimContext)
{
return View("StolenCar");
}

我的属性是这样的代码。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class AppAuthorize : Vairs.Presentation.AppAuthorizationAttribute
{
public bool ConditionalAuthentication
{
get;
set;
}


protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
bool requireAuthentication = true;

if (ConditionalAuthentication)
{

}

if (requireAuthentication)
{
var appContext = SecurityContext.Current as SitecoreSecurityContext;

if (appContext != null)
{
appContext.LoginPage = ConfigurationManager.AppSettings[SecurityPaths.Login];
appContext.LogoffPage = ConfigurationManager.AppSettings[SecurityPaths.Logout];
}

if ((appContext != null) && this.RedirectToLogin && !string.IsNullOrEmpty(appContext.LoginPage))
{
appContext.RedirectToLogin = true;
}

base.HandleUnauthorizedRequest(filterContext);
}
}
}

我想在 C# 中动态运行 StolenCar 方法。

Type magicType = Type.GetType(controllerFullName);
MethodInfo magicMethod = magicType.GetMethod(actionName);
ConstructorInfo magicConstructor =magicType.GetConstructor(Type.EmptyTypes);
object magicClassObject = magicConstructor.Invoke(new object[] { });
var result = magicMethod.Invoke(magicClassObject, new object[] { parameters }) as ActionResult;
return result;

这样我可以调用 StolenCar 方法,但它不会调用 AppAuthorize 属性。有什么办法吗?

最佳答案

除了一些系统内置的属性外,属性并不神奇。

它们只是元数据、附加到类、成员等的额外信息。

如果你想让这些属性被“执行”,你将不得不自己做。

在您的上下文中,MVC 已经为您完成了它所知道的属性,但是如果您开始自己调用这些方法,那么如有必要您就可以发现和处理这些属性,没什么在 .NET 中会自动为您完成。

关于c# - 在c#中调用方法时如何执行属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48259673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com