我有一個Action委託聲明像這樣。問題與行動代表,需要列表<T> []
private readonly Action<List<PSDPoint>[]> _psdAction;
_psdAction = AddPSDData;
PSDPoint是一個非常簡單的類。
public class PSDPoint
{
public int Frequency { get; set; }
public double Power { get; set; }
}
我在嘗試像這樣調用委託。
private void PSDData(object sender, PSDEventArgs e)
{
Dispatcher.Invoke(_psdAction, e.Data);
}
PSDEventArgs看起來像這樣。你可以看到e.Data是相同的數據類型。
public class PSDEventArgs
{
public List<PSDPoint>[] Data { get; set; }
public string[] Channels { get; set; }
}
_psdAction指向此函數。我從來沒有達到這個代碼。
private void AddPSDData(List<PSDPoint>[] data)
{
...
}
我得到這個調度器試圖調用的錯誤。我無法弄清楚爲什麼。我正在通過正確的類型。我猜這是一個有趣的事情,有一個列表的數組?
Object of type 'System.Collections.Generic.List`1[DataLogger.Model.PSDPoint]' cannot be converted to type 'System.Collections.Generic.List`1[DataLogger.Model.PSDPoint][]'.
作爲一個側面說明:這將工作,因爲這個Invoke過載需要一個「params」參數。我想這是一個味道的問題 - 直接轉換可能會快一點給它的數組 - 但我不知道編譯器是否不會用數組替換params – Carsten
@Coenoen編譯器可以'不要替換params數組,否則會違反規範。 – JaredPar
以及我的恥辱我不得不承認,我從來沒有真正看過規格:( - 但是,謝謝 – Carsten