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;
    }