Giao diện Microsoft.Office.Interop.Word._Document có một phương pháp với chữ ký sau đây:Hiểu COM C# giao diện
void Close(ref object SaveChanges = Type.Missing, ref object OriginalFormat = Type.Missing, ref object RouteDocument = Type.Missing);
Một vài điểm tôi đang gặp khó khăn hiểu biết:
- Một ref tham số không thể có giá trị mặc định.
- Giá trị mặc định phải là một hằng số và
Type.Missing
thì không. - Khi gọi phương thức này, tôi có thể sử dụng
Close(false)
- thông thường tham số ref yêu cầu biến có thể gán? - Khi điều hướng đến định nghĩa
Type
trong Visual Studio, nó đưa tôi đến thuộc tính _Document.Type, nhưng điều này không có thuộc tính có tênMissing
. Đây có phải là một lỗi trong VS?
Cảm ơn bạn đã giải thích.
1. và 2 .: Thật đơn giản, thư viện interop không được viết bằng C# :), 3 .: Bạn cần một biến. 4: Nó sẽ đưa bạn đến 'System.Type.Missing' Tất cả trong tất cả, sử dụng VB.NET nếu bạn sẽ sử dụng thư viện COM như thế này - nó sẽ giúp bạn tiết kiệm một số lượng đáng kinh ngạc của rắc rối. VB là * ngôn ngữ * COM, sau khi tất cả. – Luaan
@Luaan Tôi nghĩ rằng interop phải là hợp pháp C# - điều này có nghĩa là khi xem siêu dữ liệu trong VS từ một C# dll, nó không nhất thiết phải hợp lệ C#? _3 .: Bạn cần một biến._ - Tôi vừa tạo một dự án chuyển thành _false_ dưới dạng chữ, và nó hoạt động 100%. – wezten
Đó là siêu dữ liệu. Nó phải là hợp lệ IL, nhưng không hợp lệ C# - một thực tế là VS dịch siêu dữ liệu cho bạn để IL chỉ là một vấn đề thuận tiện, nó không có nghĩa là nó đã được viết bằng C# ở nơi đầu tiên. Nếu nó phải làm, điều gì sẽ là điểm của việc có thêm nhiều ngôn ngữ trên CLR ngay từ đầu? Quảng cáo 3: Rất tiếc, tôi nghĩ tôi đã sử dụng điều đó trước khi thành công. Nó chỉ là tôi đã nhìn thấy quá nhiều SO Q & Vì luôn luôn sử dụng 'ref' đã có, xin lỗi :)) – Luaan