cuốn sách gpt4 ai đã làm

Tạo một hành động trong F# để sử dụng phương thức C#

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 18:33:35 25 4
mua khóa gpt4 Nike

Tôi muốn sử dụng phương pháp này từ việc triển khai HttpListener của Owin:

Tạo IDisposable tĩnh công khai (thuộc tính AppFunc, IDictionary)

AppFunc có chữ ký này:

IDictionnary -> Nhiệm vụ

Tôi muốn tạo một tác vụ nhưng nó yêu cầu một Hành động và tôi không biết cách thực hiện nó trong F#. Điều tốt nhất tôi đã làm cho đến nay là sử dụng cái này question Mã trong:

mô-đun CsharpAction

mở hệ thống

gõ Wrapper<'T>(f:'T -> unit) =
thành viên x.Invoke(a:'T) = fa

hãy để makeAction (typ:Type) (f:'T -> unit) =
hãy để actionType = typedefof>.MakeGenericType(typ)
hãy để WrapperType = typedefof>.MakeGenericType(typ)
hãy bọc = Wrapper<_>(f)
Delegate.CreateDelegate(actionType, được bao bọc, được bao bọc.GetType().GetMethod("Gọi"))

chương trình.fs

hãy để yymmdd1 (ngày:DateTime) = date.ToString("yy.MM.dd")
hãy printSuccess = fun() -> printfn "Thành công %s" (yymmdd1 DateTime.Now )
hãy để actionTask = CsharpAction.makeAction (typeof) (printSuccess)
hãy để các thuộc tính có thể thay đổi = Từ điển (dict [("fooKey", new Object())])


let server = OwinServerFactory.Create((fun (props) -> new Task(actionTask)) , thuộc tính)

Sau đó nó nói với tôi:Biểu thức này lẽ ra phải có kiểu hành động nhưng ở đây nó có kiểu delegate

Tôi có nên cung cấp Hành động từ mã F# đến C# không? Hoặc tôi có nên xử lý mã C# để cung cấp một số chi tiết cho f#, như chờ đại biểu thay vì một thao tác không?

Tôi đang vượt quá giới hạn hiểu biết của mình và tôi cảm thấy đau đớn. Chắc chắn là tôi sẽ phải học hỏi rất nhiều, nhưng nếu bạn muốn giúp tôi bước lên bước đầu tiên...

câu trả lời hay nhất

Bạn không cần sử dụng sự phản chiếu để tạo đại biểu trong F#. Bạn có thể bỏ hoàn toàn phần đầu tiên của mã (của bạn CsharpHành động mô-đun).

Đối với đoạn mã thứ hai, hãy thử điều này:

mở hệ thống
mở System.Collections.Generic
mở System.Threading.Tasks

hãy để yymmdd1 (ngày: DateTime) = date.ToString "yy.MM.dd"
let printSuccess() = printfn "Thành công %s" (yymmdd1 DateTime.Now)

hãy để máy chủ =
let actionTask = Hành động printSuccess
hãy để thuộc tính = Từ điển (dict ["fooKey", obj ()])
OwinServerFactory.Create((đạo cụ vui nhộn -> Nhiệm vụ mới (actionTask)), thuộc tính)

Về c# - Tạo một hành động trong F# để sử dụng các phương thức c#, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/18802085/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress