加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#/ Salesforce:必须约束通用,不能约束通用

发布时间:2020-12-15 21:15:11 所属栏目:百科 来源:网络整理
导读:这个问题与C#和Salesforce相同,可能从任何一方都可以找到解决方案.建议欢迎! 我正在编写一个通用类来读取Salesforce数据.签名如下所示: public abstract class SalesforceReaderSalesforceObjectType,RecordType where SalesforceObjectType: sObject 这让
这个问题与C#和Salesforce相同,可能从任何一方都可以找到解决方案.建议欢迎!

我正在编写一个通用类来读取Salesforce数据.签名如下所示:

public abstract class SalesforceReader<SalesforceObjectType,RecordType>
  where SalesforceObjectType: sObject

这让我以后可以使用这段代码:

List<RecordType>  records = new List<RecordType>();
QueryResult  queryResult = service.query(query);
foreach (sObject rawRecord in queryResult.records)
  records.Add(ConvertRecord((SalesforceObjectType)rawRecord));

...

public abstract RecordType  ConvertRecord(SalesforceObjectType record);

计划是编写此类的实现,知道如何将Salesforce Lead对象解析为RecordType,RecordType可以是基本对象[],Dictionary< string,value>或完全定义的struct我后来选择.

到目前为止,我对我出色的优雅解决方案感到非常满意.我的Codey奖与获胜一样好.然后我尝试编写一个实现.这个定义不好:

class LeadReader: SalesforceReader<Lead,object[]>

编译结果是:

The type 'SalesforceExtractor.Salesforce.Lead' cannot be used as type
parameter 'SalesforceObjectType' in the generic type or method
'SalesforceUtilities.SalesforceReader<SalesforceObjectType,RecordType>'.
There is no implicit reference conversion from
'SalesforceExtractor.Salesforce.Lead' to
'SalesforceUtilities.Salesforce.sObject'.

游民.我必须在抽象类中使用SalesforceObjectType:sObject约束,因此我可以强制转换sObjects,但由于转换不是隐式的,因此对于实现类来说还不够好.

我需要亲吻我整洁的小解决方案再见,还是有办法挽救这个?这是我的第一个Salesforce项目,所以如果我需要采取不同的方式,请告诉我.

对于糟糕的电影/ MST3K buff:

Where do “must” and “cannot” meet on the graph?

解决方法

啊哈,我只需走开半个小时再看一遍.在使用计算机20年后,您认为我已经了解到问题通常是一个透视问题.

Lead确实从sObject继承,但是抽象类在库中,在实现类的不同命名空间和项目中,并且每个都使用Salesforce WSDL.我要求编译器将SalesforceExtractor.Salesforce.Lead强制转换为SalesforceUtilities.Salesforce.sObject,这是无效的.我只需要在我的实现类中更明确:

class LeadReader: SalesforceReader<SalesforceUtilities.Salesforce.Lead,object[]>

编译,我想我应该好好去.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读