2014-12-29 5 views
0

Здесь C# кодC# ошибки преобразования VB интерфейс

namespace WpfApplication9.ViewModels.Interfaces 
{ 
    public interface ITradeViewModel 
    { 
     ObservableCollection<Trade> GetTrades(); 
    } 
} 

namespace WpfApplication9.ViewModel 
{ 
    public class TradesViewModel : BaseViewModel, ITradeViewModel 
    { 
     private ObservableCollection<Trade> _trades = new ObservableCollection<Trade>(); 

     private ICommand _saveCommand; 
     private ICommand _loadCommand; 

     public TradesViewModel() 
     { 
      _saveCommand = new SaveTradesCommand(); 
      _loadCommand = new LoadTradesCommand(); 
      _trades = GetTrades(); 
     } 

     public ObservableCollection<Trade> Trades { get {return _trades;} } 

     public ObservableCollection<Trade> GetTrades() 
     { 
      if (_trades == null || _trades.Count == 0) 
       _loadCommand.Execute(_trades); 
      return _trades; 
     } 
    } 
} 

и когда я преобразовать это в VB, как показано ниже,

Namespace WpfApplication9.ViewModels.Interfaces 
    Public Interface ITradeViewModel 
     Function GetTrades() As ObservableCollection(Of Trade) 
    End Interface 
End Namespace 


Namespace WpfApplication9.ViewModel 
    Public Class TradesViewModel 
     Inherits BaseViewModel 
     Implements ITradeViewModel 

     Private _trades As New ObservableCollection(Of Trade)() 

     Private _saveCommand As ICommand 
     Private _loadCommand As ICommand 

     Public Sub New() 
      _saveCommand = New SaveTradesCommand() 
      _loadCommand = New LoadTradesCommand() 
      _trades = GetTrades() 
     End Sub 

     Public ReadOnly Property Trades() As ObservableCollection(Of Trade) 
      Get 
       Return _trades 
      End Get 
     End Property 

     Public Function GetTrades() As ObservableCollection(Of Trade) 
      If _trades Is Nothing OrElse _trades.Count = 0 Then 
       _loadCommand.Execute(_trades) 
      End If 
      Return _trades 
     End Function 
    End Class 
End Namespace 

Он вернет мне ошибку, которая говорит мне GetTrades для Интерфейс ITradeViewModel не реализован?

Что я делаю неправильно?

спасибо,

+2

Вы должны быть явным с vb.net - http://msdn.microsoft.com/en-us/library/28e2e18x.aspx –

+2

VB требует, чтобы вы были более явными. Поместите курсор на строку Imeplements, нажмите «Ввод», и он добавит шаблон для необходимых методов/членов и т. Д. «Реализует ITradeViewModel.GetTrades» – Plutonix

+0

спасибо, так просто. Иногда инструменты преобразования даже не делают это правильно. – batmaci

ответ

3

Вы должны явно реализовать метод, добавив Implements ITradeViewModel.GetTrades:

Public Function GetTrades() As ObservableCollection(Of Trade) Implements ITradeViewModel.GetTrades 
     If _trades Is Nothing OrElse _trades.Count = 0 Then 
      _loadCommand.Execute(_trades) 
     End If 
     Return _trades 
    End Function 

VB.NET, в отличие от C#, does not have implicit interface implementation.

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