Я получил один COM-компонент и хочу получить доступ из C #. Я создал интерфейс в моей программе на C # и хочу получить доступ к этому компоненту с помощью его CoClass. Когда я создал объект, он дает мне
__ComObject, который является RuntimeCallabelWrapper.
Я хочу знать, когда он вернет мне объект и он создаст для меня MethodTable, затем, когда я приведу этот интерфейс к другому интерфейсу, вызову метод другого интерфейса
я добавляю метод второго интерфейса или создаю новую MethodTable для этого?
Ниже приведен код:
[Guid("169D0491-E149-4BB3-932E-A42C4F8D3478")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
interface IInventory
{
void Buy(int quantity, float rate);
void Sell(int quantity, float rate);
int GetStock();
}
[Guid("8B08A7ED-8D46-41B2-B8D9-35F4CF37F75B")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IAccount
{
void Credit(double amount);
void Debit(double amount);
double GetBalance();
}
[Guid("F8E3E05A-CAFA-4CBD-BC42-DF9328729B01")]
[ComImport]
class Trader{}
public static void Main(string[] args)
{
IInventory inv = (IInventory) new Trader(); // this gives me RCW
inv.Buy(qty, 150);
IAccount acc = (IAccount) inv; // ?
Console.WriteLine("Current balance: {0}", acc.GetBalance());
}