Inherited property (P1) is not accessable from w/cscript.
Class structure looks something like this :
[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";}}
}
Client code in js file :
try{
var obj = new ActiveXObject("Concrete");
WshShell.Popup(obj.P1); //<-- displays empty string
}catch(e)
{
WshShell.Popup(e.description);
}
if i add property P1 to interface IB, everything works fine, but whats the point of inheritance then? Or am i doing here something really wrong?
I'm stealing the answer to this from the COM Interop: Base class properties not exposed to COM link given in the very similar question "C# exposing to COM - interface inheritance"
In particular the MVP on that site states:
It does suggest some workarounds, such as inheriting from both interfaces, or implementing a 'native' TLB (write the inteface in IDL and compile it with MIDL - there should be projects for this in vis studio).
The code seems fine and it should work as intended except of course that you have omitted the return type of the two properties, they should be:
But I am assuming this is just an overlook in the code you wrote in your post.