2014-12-29 55 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行上,點擊回車,它將爲所需的方法/成員等添加模板。'Implements 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