
Hi all,
I am following this link and created a very simple sample. The X++ code as well as the .NET code is given below. I did a compile, compile forward and Incremental CIL on AX after creating the X++ side of code.
I quite do not understand why this error is coming. The error is :
Error:
Message: Cannot create an abstract class.
Stack Trace: at System.Runtime.Serialization.FormatterServices.nativeGetUninitializedObject(RuntimeType type)
at ReadPagingFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract)
at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)
at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.PartInfo.ReadObject(XmlDictionaryReader reader, XmlObjectSerializer serializer)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameters(XmlDictionaryReader reader, PartInfo[] parts, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
The code is as below:
-- Query Builder Args class
[DataContractAttribute]
public class DemoQueryBuilderArgs extends AifQueryBuilderArgs
{
RecId refRecId;
}
[DataMemberAttribute]
public RecId RefRecordId(Recid _refRecId = refRecId)
{
refRecId = _refRecId;
return refRecId;
}
-- QueryBuilder class
public class DemoQueryBuilder extends AifQueryBuilder
{
DemoQueryBuilderArgs args;
str datasetName;
}
//Used internally to access the args object
private DemoQueryBuilderArgs getArgs()
{
return args;
}
[SysEntryPointAttribute]
public void initialize()
{
query = new Query(queryStr(CustTable));
queryRun = new QueryRun(query);
}
public void setArgs(AifQueryBuilderArgs _args)
{
if(!_args
|| classIdGet(_args) != classNum(DemoQueryBuilderArgs))
{
throw error("@SYS95118");
}
args = _args;
}
My .NET Console application code :
static void Main(string[] args)
{
// Test
MyQueryServiceRef.QueryServiceClient client = new MyQueryServiceRef.QueryServiceClient();
MyQueryServiceRef.Paging paging = new MyQueryServiceRef.Paging();
MyQueryServiceRef.DemoQueryBuilderArgs args = new MyQueryServiceRef.DemoQueryBuilderArgs();
analytics.RefRecordId = 73897173;
analytics.ReturnFlatDataSet = true;
var datasetResult = client.ExecuteDynamicQuery("DemoQueryBuilder", args, ref paging);
}
- Girija
*This post is locked for comments
I have the same question (0)Hi,
Figured it out, I was using:
MyQueryServiceRef.Paging paging = new MyQueryServiceRef.Paging();
Should have used :
MyQueryServiceRef.Paging paging = null;
- Girija