2013-07-12 4 views
0

У меня есть базовый класс, написанный на VB.net. Этот базовый класс обладает свойством. У меня есть класс C#, который выведен из этого класса vb. Мне нужно установить свойство здесь, чтобы я мог придать ему значение. Это моя собственность в классе vb.net:Доступ к свойству WriteOnly

Public MustInherit Class FTPDownloaderBase 

    Public WriteOnly Property FilesToDownload() As ArrayList 
    Set(ByVal Value As ArrayList) 
     _filesToDownload = Value 
    End Set 
    End Property 

это мой C# класс:

public class FTPDownloaderClass:FTPDownloader.FTPDownloaderBase 
{ 



    public Array FilesToDownloadC 
    { 
     get 
     { 
      return base.FilesToDownload; 
     } 


    } 

}

Но я получаю эту ошибку на линии: возвращение base.FilesToDownload; Свойство или индексатор 'FTPDownloded.FtpDownloderbase.FilesToDownload' не может использоваться в этом контексте, поскольку ему не хватает get accessor.

Как я могу получить доступ к этому свойству и дать ему значение в моем коде на C#?

Решение: У меня есть добавить Добраться до VB базового класса, и теперь она доступна, как это:

Public Property FilesToDownload() As ArrayList 
    Get 
     Return _filesToDownload 
    End Get 
    Set(ByVal Value As ArrayList) 
     _filesToDownload = Value 
    End Set 
End Property 

ответ

0

Вы не можете получить доступ к объекту недвижимости, если у него нет аксессуаров get, если вы не используете отражение.

Простейшим решением было бы добавить аксессуар Get к классу VB или сделать _filesToDownload защищенным, а не частным.

Если вы не можете изменить базовый класс:

return typeof(FTPDownloader.FTPDownloaderBase).GetFields(BindingFlags.NonPublic).Single(f => f.Name == "_filesToDownload").GetValue(this); 
+0

Благодаря charpler, я havn't думаю, что я могу добавить добраться до базового класса, я добавил Public FilesToDownload Property() Как ArrayList Получить Вернуться _filesToDownload End Get Set (ByVal Value As ArrayList) _filesToDownload = Value End Set Завершенное имущество и он работает, спасибо :) – Alma

0

Вы должны изменить базовый класс и либо добавить ПОЛУЧИТЬ аксессор, или добавить метод для возврата свойства.

+0

Да, мой плохой. исправлено. –

Смежные вопросы