[c#] Наследование интерфейсов в классах ComVisible в C #



Answers

Код кажется прекрасным, и он должен работать так, как предполагалось, за исключением того, что вы опустили тип возврата двух свойств, они должны быть:

[ComVisible]
public abstract class Base : IA
{
    public string P1{get{return "somestring";}}
}   

[ComVisible]
public class Concrete : Base, IB
{
   public string P2{get{return "P2somestring";}}
}

Но я предполагаю, что это просто пропущенный код, который вы написали в своем посте.

Question

Унаследованное свойство (P1) недоступно из w / cscript.

Структура класса выглядит примерно так:

[ComVisible]
public interface IA 
{
     string P1{get;} 
} 

[ComVisible]
public interface IB : IA
{
    string P2{get;} 
}

[ComVisible]
public abstract class Base : IA
{
    public string P1{get{return "somestring";}}
}   

[ComVisible]
public class Concrete : Base, IB
{
   public string P2{get{return "P2somestring";}}
}

Клиентский код в файле js:

try{
var obj = new ActiveXObject("Concrete");
WshShell.Popup(obj.P1); //<-- displays empty string
}catch(e)
{
WshShell.Popup(e.description);
}

если я добавлю свойство P1 в интерфейс IB, все будет хорошо, но какова точка наследования тогда? Или я делаю здесь что-то действительно не так?




Links