Friday, March 25, 2011

[WF4] Error : Literal only supports value types and the immutable type System.String.

有鑑於Workflow Foundation 4的中文資訊相當少,所以我又厚臉皮來貼一篇沒啥技術份量的文章了XD

在我把 workflow 裡面邏輯拉好,code activity 都寫好,要調用(Invoke)workflow時發生了下面這個錯誤。
Literal only supports value types and the immutable type System.String. The type XXX cannot be used as a literal.

查了一下,原來是我要傳進去 WorkFlow 的型別是系統沒辦法自動轉換的,所以發生了這個錯誤,解決方法就是將傳入參數的方式做個改變,舉例來說:

原本一般的傳入方式是這樣

WorkflowInvoker.Invoke(new Groupon() { i_Deal = Deal,
                                       i_Coupon = Coupon,
                                       i_Order = Order } );

要改成下面這個方式才能把值傳進去

WorkflowInvoker.Invoke(new Groupon() { i_Deal = new InArgument<DealType>((env)=> Deal),
                                       i_Coupon = new InArgument<CouponType>((env) => Coupon),
                                       i_Order = new InArgument<OrderType>((env) => Order) } );

還算是蠻簡單的問題,希望遇到的人不會卡太久。


參考資料 :
Windows Workflow throws error: 'Literal': Literal only supports value types and the immutable type System.String.

No comments:

Post a Comment