我正在使用Microsoft Exchange Web服务(EWS)托管API 1.2使用C3访问Exchange邮箱中的数据。返回的对象的某些属性很难访问,因为它们是自定义属性。
为了简化对这些属性的访问,我(作为一个示例)编写了一个名为Contact2的类,该类扩展了EWS给我的Contact类。
调用返回Contact对象的函数时,如何将其“升级”到Contact2?
这是我编写的Contact2类:
namespace ExchangeContacts
{
class Contact2 : Microsoft.Exchange.WebServices.Data.Contact
{
public ExchangeService ex = new ExchangeService();
public Dictionary<string, ExtendedPropertyDefinition> propDefs = new Dictionary<string, ExtendedPropertyDefinition>();
public PropertySet myPropSet = new PropertySet();
public Contact2(ExchangeService service)
: base(service)
{
propDefs.Add("MarketingGuid", new ExtendedPropertyDefinition(new Guid("3694fe54-daf0-49bf-9e37-734cfb8521e1"), "MarketingGuid", MapiPropertyType.String));
myPropSet = new PropertySet(BasePropertySet.FirstClassProperties) { propDefs["MarketingGuid"] };
ex = service;
}
new public void Load()
{
base.Load(myPropSet);
}
new public void Load(PropertySet propertySet)
{
propertySet.Add(propDefs["MarketingGuid"]);
base.Load(propertySet);
}
public string MarketingGuid
{
get
{
string g;
if (TryGetProperty(propDefs["MarketingGuid"], out g))
return g;
else
return "";
}
set
{
SetExtendedProperty(propDefs["MarketingGuid"], value);
}
}
}
}
最佳答案
您需要在Contact2中定义一个接受Contact对象的显式静态方法或构造函数。即
public static Contact2 FromContact(Contact cnt)
{
return new Contact2(cnt.x, cnt.y, ...)
}
如果确实需要,可以定义隐式或显式转换。通常不建议这样做,因为它可能导致混淆,因此在进行此操作之前,请先阅读显式和隐式转换。我不会告诉你如何完成的:P