Я пытаюсь понять это странное поведение в VBA. У меня есть два .NET класса, которые наследуют интерфейсы и открыты для COM. Я регистрируюсь для взаимодействия COM и в VBA я сталкиваюсь с этим странным поведением, когда объекты показывают типы из неправильного интерфейса. Хорошо объяснено в коде, как показано ниже:
C # Класс:
namespace ComTest
{
[ComDefaultInterface(typeof(ITestClass))]
[ClassInterface(ClassInterfaceType.None)]
public class TestClass : ITestClass
{
public string TestMethod()
{
return "Version 2-PROD Version";
}
}
[ComDefaultInterface(typeof(ITestTrade))]
[ClassInterface(ClassInterfaceType.None)]
public class TestTrade : ITestTrade
{
public string TradeName { get; set; }
public int QuantityNumber { get; set; }
}
}
В Excel VBA:
Dim objTestClass As ComTest.TestClass
Set objTestClass = New ComTest.TestClass
Dim str As String
objTestClass. ---> I GET ITestTrade methods in objTestClass
Dim tTestTrade As ComTest.TestTrade
Set tTestTrade = New ComTest.TestTrade
tTestTrade. -----> I GET ITestClass methods in tTestTrade
Но если я удалю 'ComTest' и просто использую имена классов, это будет работать нормально. то есть,
Dim objTestClass As TestClass
Set objTestClass = New TestClass
Dim str As String
objTestClass. ---> I GET ITestClass types
Dim tTestTrade As TestTrade
Set tTestTrade = New TestTrade
tTestTrade. -----> I GET ITestTrade
Может кто-нибудь, пожалуйста, помогите мне понять это.