Lambda 使用表达式提取包含命名空间的属性的完整限定名
我有此属性,它是一个资源密钥:Lambda 使用表达式提取包含命名空间的属性的完整限定名,lambda,.net-4.5,Lambda,.net 4.5,我有此属性,它是一个资源密钥: A.B.C.D <Namespace>.<Namespace>.<Class>.<Property> 使用从谷歌搜索中找到的各种表达式样本,它们只生成结果D 但是,我需要包含名称空间的完整路径 因此,我可以使用在属性名和键属性之前派生的baseName动态创建resourceManager来检索资源 string fullQN = ExpressionMagic.DeriveFullQN(A.B.C.D.); //
A.B.C.D
<Namespace>.<Namespace>.<Class>.<Property>
使用从谷歌搜索中找到的各种表达式样本,它们只生成结果D
但是,我需要包含名称空间的完整路径
因此,我可以使用在属性名和键属性之前派生的baseName动态创建resourceManager来检索资源
string fullQN = ExpressionMagic.DeriveFullQN(A.B.C.D.); // <- possible?
var dot = fullQN.LastIndexOf('.');
var key = fullQN.Substring(dot + 1);
var baseName = fullQN.Substring(0, dot);
var rsxMgr = new System.Resources.ResourceManager(baseName, System.Reflection.Assembly.GetExecutingAssembly());
string resx = rsxMgr.GetString(key);
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
string DeriveFQN<T>(Expression<Func<T>> p)
{
var mbr = ((MemberExpression)p.Body).Member;
var fqn = string.Format("{0}.{1}", mbr.DeclaringType.FullName, mbr.Name);
return fqn;
}