Написал достаточно большую программу на C# для расчёта достаточно ресурсоёмкой задачи. Хотелось бы её несколько оптимизировать, то есть, вычислительную часть переписать на c++ с дальнейшей перспективой перегнать программу в Windows native code, да так, чтобы минимально изменять код, уже написанный на с#. Вроде бы общей концепции .NET это не протоворечит, да только возникла одна большая проблема: почти в каждом классе, написанном на c#, используются индексаторы. То есть, переписав один класс на cpp, вероятно, придётся переписывать весь код на c#, использующий этот класс.
Вопрос такой: как объявить индексаторы в c++.net? Можно ли это как-нибудь сделать?
Сначала нужно создать индексируемое свойство. Делается это в MC++ путём объявления метода (ов) с именем
get_<имя свойства> (
set_<имя свойства>), с модификатором
__property.
Однако, C# не поддерживает индексируемые свойства, поэтому ему нужно сообщить, что это свойство является ещё и свойством по умолчанию. Делается это с помощью атрибута
System.Reflection.DefaultMemberAttribute.
Пример:
[ System::Reflection::DefaultMember( "Item" ) ]
public __gc class MyClass
{
public:
__property int get_Item( int index )
{
return 5;
}
__property void set_Item( int index, int value )
{
}
};
Данная информация предоставляется на условиях «КАК ЕСТЬ», без предоставления каких-либо гарантий и прав. Используя данную информацию, вы соглашаетесь с тем, что (i) Майкрософт не несет ответственности за использование вами данной информации и (ii) вы принимаете на себя весь риск, связанный с использованием данной информации.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Внёс вопрос в FAQ.
Вот здесь.
Данная информация предоставляется на условиях «КАК ЕСТЬ», без предоставления каких-либо гарантий и прав. Используя данную информацию, вы соглашаетесь с тем, что (i) Майкрософт не несет ответственности за использование вами данной информации и (ii) вы принимаете на себя весь риск, связанный с использованием данной информации.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение