2014-06-12 16 views
5

Nếu tôi định nghĩa một lớp trong thư viện lớp C# /. NET, sau đó bằng cách làm cho nó hiển thị COM tôi có thể khởi tạo lớp và gọi phương thức của nó từ VBA bằng cách sử dụng COM.Tôi có thể gọi phương thức tĩnh của lớp C# từ VBA qua COM không?

Có cách nào để gọi các phương thức tĩnh tĩnh của một lớp học như vậy từ VBA không?

+2

http://msdn.microsoft.com/en-us/library/ms182198.aspx là câu hỏi của bạn? –

+1

Bạn sẽ cần phải thực hiện một phương pháp thể hiện kết thúc tốt đẹp phương pháp tĩnh cho COM. – vcsjones

+0

@JackMalkovich: Liên kết cho biết "COM không hỗ trợ các phương pháp tĩnh", vì vậy có, điều đó trả lời câu hỏi của tôi ("không"). Hãy đặt câu trả lời đó như một câu trả lời. –

Trả lời

7

COM không hỗ trợ các phương pháp tĩnh và trường hợp đối tượng COM không gọi phương thức tĩnh. Thay vào đó, thiết lập ComVisible(false) trên phương pháp tĩnh của bạn, sau đó đưa ra một phương pháp dụ để quấn nó:

[ComVisible(true)] 
public class Foo 
{ 
    [ComVisible(false)] 
    public static void Bar() {} 

    public void BarInst() 
    { 
     Bar(); 
    } 
} 

Hoặc chỉ cần thực hiện phương pháp dụ thay vì tĩnh và quên đi tất cả cùng nhau tĩnh.

Bạn không để đánh dấu phương thức tĩnh là không hiển thị với COM, tuy nhiên, nó đáp ứng một số công cụ phân tích mã sẽ cảnh báo cho bạn về phương pháp tĩnh trên các loại hiển thị COM và làm rõ không có ý định hiển thị cho COM.

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