获取apex包前缀名称?

时间:2012-01-30 04:02:45

标签: apex-code soql

有没有办法在apex中获取托管包的前缀名称?

我有一个SOSL查询但该应用程序位于开发人员组织和托管包中,如果我有办法获取软件包名称,那就太棒了,因为我不需要对其进行硬编码。 / p>

感谢。

2 个答案:

答案 0 :(得分:1)

执行此操作的唯一方法是AFAIK,即使用Metadata API。您可以调用describeMetadata(),然后评估describeMetadataResult中返回的organizationNamespace(String)值。

Apex中,您可以使用动态SOQL / DML执行不太优雅的try / catch方法,至少可以确定您怀疑的内容是否确实存在。虽然这不会告诉你像Metadata API那样实际存在什么名称空间前缀。

Lacey是正确的,你不需要前缀,虽然名称歧义可能会成为一个问题。例如,如果您有一个自定义对象Expense__c并安装了包含ACCT__Expense__c的记帐包,那么如果打算访问托管包对象,您肯定希望明确包含ACCT__前缀而不是你自己的。

答案 1 :(得分:1)

如果传入的命名空间不是已安装包(或您正在开发的托管包)的有效命名空间,则UserInfo.isCurrentUserLicensed('nsPrefix')将抛出TypeException。我认为这是没有元数据API的最接近的。