2010-02-15 28 views
5

Trong C# 4, khi khởi động từ DynamicObject và overridding TryInvokeMember, làm thế nào người ta có thể xác định xem bất kỳ tham số nào được cung cấp tại trang cuộc gọi đã được chuyển với ngữ nghĩa out hay ref? Tôi có thể thấy một số lĩnh vực tư nhân trong các binder cung cấp có chứa thông tin này (cụ thể là Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder.ArgumentInfo tài sản) nhưng nó dường như không thể tiếp cận. Tôi cho rằng thông tin này phải có sẵn ở đâu đó nếu không nó sẽ giới hạn kiến ​​thức của một người về đầu vào cung cấp khá nghiêm trọng.C# 4: Xác định tham số truyền ngữ nghĩa trong các cuộc gọi động

Trả lời

2

Tôi đã nói chuyện với nhóm DLR về điều đó. Thật không may, câu trả lời là không, thông tin này không có sẵn cho DynamicObject.

Lý do là tham số ref/out rất C# cụ thể. Và các đối tượng động có thể được chia sẻ giữa nhiều ngôn ngữ và không phải tất cả các ngôn ngữ đều có các ký hiệu này. DynamicObject là "call-by-value", vì vậy các đối tượng của bạn có thể được tiêu thụ bởi các API khác nhau.

+0

Cảm ơn sự giúp đỡ. Tôi đã nghi ngờ rằng nó sẽ không thể xảy ra. –

Các vấn đề liên quan