Свойство с параметром - PullRequest
       3

Свойство с параметром

9 голосов
/ 22 декабря 2011

Я получил что-то странное в VB.NET, никогда раньше не замечал ...

У меня есть класс в VB.NET , имеющий свойство с параметром , и я хочу использовать это свойство в другом C # Class , создав объект класса VB.NET, но объект класса не отображающий это свойство, кто-нибудь может сказать мне, могу ли я получить доступ к этому свойству вC # или нет.

  • Если да, то как?
  • Если нет, что означает CLR?

Вот мой код ...

Public Property AsString(ByVal name As String) As String
    Get
            //Some code
    End Get
    Set(ByVal value As String)
            //Some code
    End Set
End Property

Примечание: Я не могу изменить код VB.NET, поскольку он скомпилирован DLL.

Заранее спасибо

Ответы [ 3 ]

10 голосов
/ 22 декабря 2011

Параметризованные свойства преобразуются в get_ и set_ методы.

string name = "Foo";
string value = "Bar";
MyObject.set_AsString(name, value);
string fooValue = MyObject.get_AsString(name);
6 голосов
/ 22 декабря 2011

C # не поддерживает индексированные свойства, которые не имеют ключевого слова по умолчанию. Вы просто используете get_AsString () для вызова свойства getter и set_AsString () для вызова метода установки. Методы, а не свойства. Они должны легко появиться в списке IntelliSense.

Также обратите внимание, что set_AsString () требует двух аргументов, даже если вы установили свойство set не индексированным. Передайте что-нибудь, null сделает.

Между прочим, это, возможно, является иллюстрацией того, почему команда C # решила не поддерживать индексированные свойства в общем случае. Несоответствие между получателем и установщиком является болезненным. У команды vb.net не было выбора, у Visual Basic они были задолго до появления .NET. Он частично возвратился в C # версии 4, хотя индексированные свойства поддерживаются на интерфейсах COM. COM-программирование слишком больно без них. Особенно в объектной модели Office.

0 голосов
/ 22 декабря 2011

Если вы заметили, что на самом деле в вашем свойстве есть два параметра, один из них - ваше имя, а другой - значение по умолчанию, поэтому вам нужно указать два параметра при работе с этим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...