Индексированные проперти
От: WarLord  
Дата: 08.08.02 03:59
Оценка:
Кто-нибудь сталкивался со следующей проблемой: пишу NET. компоненту на C++ managed extensions и обнаружил, что Indexed properties не воспринимаются в C# ? Вместо Indexed property видны 2 метода get_IndexedProperty и set_IndexedProperty, хотя в VB все работает. В SDK сказано, что в С# Indexed properties реализованы через Indexers. Как сделать так, чтобы Indexed property была видна и из VB, и из C# ?
Заранее спасибо.
Re: Индексированные проперти
От: MaxMP Россия  
Дата: 09.08.02 02:27
Оценка:
С# и VB.NET, а также, возможно, и другие языки индексер определяют только по DefaultMemberAttribute атрибуту.
Вот работающий пример:

#using <mscorlib.dll>

[System::Reflection::DefaultMemberAttribute("Prop")]
public __gc class Z
{
    public:
        Z(){}
        
        __property int get_Prop(int i)
        {
            return 0;
        }

        __property void set_Prop(int i)
        {
        }
};



Здравствуйте WarLord, Вы писали:

WL>Кто-нибудь сталкивался со следующей проблемой: пишу NET. компоненту на C++ managed extensions и обнаружил, что Indexed properties не воспринимаются в C# ? Вместо Indexed property видны 2 метода get_IndexedProperty и set_IndexedProperty, хотя в VB все работает. В SDK сказано, что в С# Indexed properties реализованы через Indexers. Как сделать так, чтобы Indexed property была видна и из VB, и из C# ?

WL>Заранее спасибо.
Re[2]: Индексированные проперти
От: MaxMP Россия  
Дата: 09.08.02 02:32
Оценка:
Да, в догонку, видно, что в с# можно иметь только одно имя индексера (путем overloading можно иметь несколько разных индексеров с одним именем, но разными параметрами). Достаточно суровое ограничение.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.