I am attempting to write a component in C# to be consumed by classic ASP that allows me to access the indexer of the component (aka default property).
For example:
C# component:
public class MyCollection {
public string this[string key] {
get { /* return the value associated with key */ }
}
public void Add(string key, string value) {
/* add a new element */
}
}
ASP consumer:
Dim collection
Set collection = Server.CreateObject("MyCollection ")
Call collection.Add("key", "value")
Response.Write(collection("key")) ' should print "value"
Is there an attribute I need to set, do I need to implement an interface or do I need to do something else? Or this not possible via COM Interop?
The purpose is that I am attempting to create test doubles for some of the built-in ASP objects such as Request, which make use of collections using these default properties (such as Request.QueryString("key")
). Alternative suggestions are welcome.
Update: I asked a follow-up question: Why is the indexer on my .NET component not always accessible from VBScript?