如何将早期绑定属性名称作为字符串常量?

How to have early bound attribute names as string constants?

上下文

我正在使用 crmsvcutil 生成早期绑定实体。我也在使用实体名称字符串常量 MyEntity.EntityLogicalName 例如在如下语句中(使用备用键):

 var reference = new EntityReference(MyEntity.EntityLogicalName, "my_attribute_name", myValue)

问题

我想删除语句中的 "my_attribute_name" 字符串文字。我该怎么做?

不幸的是,我在生成的 C# 模型中找不到它。

我错过了什么?如果没有,也许有 crmsvcutil 的扩展(类似于选项集生成器 sameple?

要回答这个问题,您可以使用 C# 6 nameof() 表达式来获取 属性 的名称。如果将名称转换为小写,则最终得到逻辑名称:

var logicalName = nameof(MyEntity.MyAttributeValue).ToLower();

话虽如此,我发现自己很少需要做这样的事情。通常您可以使用 Entity.ToEntityReference() 来获得更强类型的方法。

此外,您用于 EntityReference 的构造函数仅用于备用键(否则人们只会使用带有 string 和 [=15 的 constructor =])