AX에서 새 Sales Order를 만드는 ASP.NET MVC 3 앱용 웹 서비스가 있습니다. AX에서 나는 현재 1 개의 메소드를 가지고있는 OnlineOrder 클래스를 만들었습니다. Sales Reference를 생성하는 것입니다. Axapta.CreateAxaptaObject()가 작동하지 않습니다.
public AxaptaObject order;
public void CreateOrder()
{
AxaptaStart();
order = Axapta.CreateAxaptaObject("OnlineOrder");
AxaptaStop();
}
public string GetSalesRef(string username, string delivery, string reference)
{
AxaptaStart();
string number = order.Call("orderCreate", username, delivery, reference).ToString();
AxaptaStop();
return number;
}
그런 다음 내 컨트롤러에서 나는이 메소드를 호출 : 다음은 내 웹 서비스의 코드는
client.CreateOrder();
string number = client.GetSalesRef(user.Username, order.deliverymethod, order.custorder).ToString();
이 작동하지 않고 보여 예외 정보는, 그것의 단지 빈 없다 메시지. order
AxaptaObject는 OnlineOrder
타입이 아니므로 해당 메소드를 호출 할 수 없다고 생각합니다. orderCreate
메서드를 사용하여 객체를 인스턴스화하는 방법은 무엇입니까?
편집 :
내가 할 경우 :
public string CreateOrder(string username, string delivery, string reference)
{
AxaptaStart();
order = Axapta.CreateAxaptaObject("OnlineOrder");
string number = order.Call("orderCreate", username, delivery, reference).ToString();
AxaptaStop();
return number;
}
이 작동하지만, 이것이 내가 앞으로 내가 내 OnlineOrder 객체에 더 많은 방법을 추가 할로 유효한 해결책이 아니다 내 웹 서비스에서 하나의 메서드로 모두 호출하고 싶지 않다.
그러나 이것도 내 webservice wouldnt에 대한 모든 1 메서드에 있어야합니다? 다른 메서드에서 같은 "order"객체를 어떻게 사용합니까? – CallumVass
아니요. 'order' 객체는 예제에서와 같이 래퍼 메소드에서 반환되거나 멤버 변수에 저장 될 수 있습니다. COM에 대한 모든 호출은 추악한 세부 사항을 숨기는 래퍼 클래스에 숨겨져 있습니다. 또한 호출자의 코드가 멋지게 보입니다 (r). –