如何将早期绑定属性名称作为字符串常量?
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 =])
上下文
我正在使用 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 =])