Я пытаюсь написать компонент на C#, который будет использоваться классическим ASP, который позволит мне получить доступ к индектору компонента (aka default property).Предоставление свойства indexer/default через COM Interop
Например:
C# компонент:
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 потребитель:
Dim collection
Set collection = Server.CreateObject("MyCollection ")
Call collection.Add("key", "value")
Response.Write(collection("key")) ' should print "value"
Есть ли атрибут мне нужно установить, нужно ли мне реализовать интерфейс или мне нужно сделать что-то еще? Или это невозможно через COM Interop?
Целью является то, что я пытаюсь создать тестовые двойники для некоторых из встроенных объектов ASP, таких как Request, которые используют коллекции, используя эти свойства по умолчанию (например, Request.QueryString("key")
). Альтернативные предложения приветствуются.
Обновление: Я задал дополнительный вопрос: Why is the indexer on my .NET component not always accessible from VBScript?
Спасибо, это заработало, но не на этой [строковой клавише]. Я должен был применить DispId к другому свойству, прежде чем он сработает. – 2008-11-19 07:37:14