Hi,
I'm trying to create a custom webservice in D365 Platform U12.
I wanted to use a base response class and derive every other class from that base class.
So the base class is as follows :
/// <summary>
/// Base Response DataContract
/// </summary>
[DataContractAttribute]
class PWBMobServiceBaseResponse
{
boolean _callSucceeded;
str _errorMessage;
boolean _logonSucceeded;
str _logonErrorMessage;
/// <summary>
/// Datamember callsucceeded
/// </summary>
/// <param name = "callSucceeded"></param>
/// <returns></returns>
[DataMemberAttribute("CallSucceeded")]
public boolean parmCallSucceeded(boolean callSucceeded = _callSucceeded)
{
_callSucceeded = callSucceeded;
return _callSucceeded;
}
/// <summary>
/// Datamember errorMessage
/// </summary>
/// <param name = "errorMessage"></param>
/// <returns></returns>
[DataMemberAttribute("ErrorMessage")]
public str parmErrorMessage(str errorMessage = _errorMessage)
{
_errorMessage = errorMessage;
return _errorMessage;
}
/// <summary>
/// Datamember logonSucceeded
/// </summary>
/// <param name = "logonSucceeded"></param>
/// <returns></returns>
[DataMemberAttribute("LogonSucceeded")]
public boolean parmLogonSucceeded(boolean logonSucceeded = _logonSucceeded)
{
_logonSucceeded = logonSucceeded;
return _logonSucceeded;
}
/// <summary>
/// Datamember logonErrorMessage
/// </summary>
/// <param name = "logonErrorMessage"></param>
/// <returns></returns>
[DataMemberAttribute("LogonErrorMessage")]
public str parmLogonErrorMessage(str logonErrorMessage = _logonErrorMessage)
{
_logonErrorMessage = logonErrorMessage;
return _logonErrorMessage;
}
}
While the derived class just derives but has no extra fields :
/// <summary>
/// ValidateUser Response DataContract
/// </summary>
[DataContractAttribute]
class PWBMobServiceValidateUserResponse extends PWBMobServiceBaseResponse
{
}
I got a function that validates the user and returns an object of type PWBMobServiceBaseResponse.
PWBMobServiceBaseResponse baseResponse = cls.GetBaseResponse(request);
When I test the next line, it skips the info so telling me that the downcast is invalid.
if (baseResponse is PWBMobServiceValidateUserResponse)
info("base is derived");
The 'As' keyword is invented to downcast ( from base -> derived ) but yet it does not work here :-(
Any Idea's, am I missing something ?
Regards,
Sven Peeters