Trong sản phẩm của chúng tôi, chúng tôi có những thứ gọi là "dịch vụ" là phương tiện giao tiếp cơ bản giữa các phần khác nhau của sản phẩm (và đặc biệt là giữa các ngôn ngữ — ngôn ngữ nội bộ, C, Python và .NET).Làm cách nào để tôi có thể triển khai kiểu ngoại lệ của riêng mình?
Hiện nay, đang như thế này (Services.Execute
sử dụng params object[] args
):
myString = (string)Services.Execute("service_name", arg1, arg2, ...);
Tôi thà thích để có thể viết mã như thế này và nhận được những lợi ích của kiểm tra kiểu và mã ít tiết:
myString = ServiceName(arg1, arg2, ...);
này có thể đạt được với một chức năng đơn giản,
public static string ServiceName(int arg1, Entity arg2, ...)
{
return (string)Services.Execute("service_name", arg1, arg2, ...);
}
Nhưng điều này khá rõ ràng và không dễ quản lý khi thực hiện nó cho điểm dịch vụ, như tôi định làm.
Thấy cách extern
và DllImportAttribute
công việc, tôi hy vọng chúng ta có thể để móc này lên bằng một số phương tiện như thế này:
[ServiceImport("service_name")]
public static extern string ServiceName(int arg1, Entity arg2, ...);
Nhưng tôi không biết làm thế nào để đạt được điều này chút nào và có thể' t dường như tìm thấy bất kỳ tài liệu nào cho nó (extern
dường như là một vấn đề khá mơ hồ). Gần nhất tôi đã tìm thấy là một câu hỏi hơi liên quan, How to provide custom implementation for extern methods in .NET? mà không thực sự trả lời câu hỏi của tôi và là hơi khác nhau, anyway. Đặc tả ngôn ngữ C# (đặc biệt, trong phiên bản 4.0, phần 10.6.7, Các phương pháp bên ngoài) không giúp ích gì.
Vì vậy, tôi muốn cung cấp triển khai tùy chỉnh các phương pháp bên ngoài; điều này có thể đạt được không? Và nếu vậy, làm thế nào?
Cách phổ biến nhất để làm điều này là với giao diện và truy cập từ xa proxy. – leppie
Xem http://stackoverflow.com/questions/7245507/how-to-provide-custom-implementation-for-extern-methods-in-net –
@PaulZahra: Tôi đã thấy câu hỏi đó - tôi đã đề cập đến nó trong câu hỏi của mình –