gpt4 book ai didi

c# - 如何使用表达式和/或反射获取常量名称?

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:33 27 4
gpt4 key购买 nike

如何使用表达式和/或反射获取常量名称?

我写了下面的但“我”总是空的?

 public static class Test1
{
public const string CampaignManager = "This_CAMPAIGN_MANAGER";
}

public static class ReflectionHelper
{
// <summary>
// Get the name of a static or instance property from a property access lambda.
// </summary>
// <typeparam name="T">Type of the property</typeparam>
// <param name="propertyLambda">lambda expression of the form: '() => Class.Property' or '() => object.Property'</param>
// <returns>The name of the property</returns>
public static string GetPropertyName<T>(Expression<Func<T>> propertyLambda)
{
var me = propertyLambda.Body as MemberExpression;

if (me == null)
{
throw new ArgumentException("You must pass a lambda of the form: '() => Class.Property' or '() => object.Property'");
}

return me.Member.Name;
}
}

var campaignManager = ReflectionHelper.GetPropertyName(() => Test1.CampaignManager);

最佳答案

您不能将 const 字段与反射助手一起使用,因为 lambda 表达式的主体是 ConstantExpression 而不是 MemberExpression。替换

 public const string CampaignManager = "This_CAMPAIGN_MANAGER";

 public static string CampaignManager = "This_CAMPAIGN_MANAGER";

关于c# - 如何使用表达式和/或反射获取常量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19161281/

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