方法带有泛型类型约束,如何使用

本文关键字:何使用 约束 泛型类型 方法 | 更新日期: 2023-09-27 18:16:13

我使用以下方法来保存和获取isolatedstoragessettings中的数据"

让我们提供两个方法Save/Load:

public static void SaveAudioList(string AudioListKey, IList<SongPlay> audioList)
{
    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
    if (settings.Contains(AudioListKey)) settings[AudioListKey] = audioList;
    else settings.Add(AudioListKey, audioList);
}

,我这样保存数据:

SongPlay songdetail = new SongPlay();
//songdetail.Album = "1";
//songdetail.Artist = "Love Guru";
songdetail.SongName = (string)track["name"];
songdetail.Url =(string)track["url"];
AudioTracks.Add(songdetail);
//StorageUtility.AddOrUpdateValue("tracklist", AudioTracks);
ClassLib.Class1.SaveAudioList("id", AudioTracks);

从get value我写了下面的方法:

public static void LoadAudioList<T>(string AudioListKey, ref T target) where T : IList<SongPlay>
{
    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
    if (!settings.Contains(AudioListKey)) throw new NotImplementedException(); // do something - list doesnt exist
    target = (T)settings[AudioListKey];
}

现在我想用这个:

LoadAudioList

我怎么称呼它?

方法带有泛型类型约束,如何使用

为什么LoadAudioList是一个泛型方法?
这是一个空函数,想要对IList<SongPlay>执行一个简单的赋值。

为什么不这样实现呢:

public static IList<SongPlay> LoadAudioList(string AudioListKey)
{
    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
    if (!settings.Contains(AudioListKey)) throw new NotImplementedException(); // do something - list doesnt exist
    return settings[AudioListKey] as IList<SongPlay>;
}

如果你想让它为空:

public static void LoadAudioList(string AudioListKey, ref IList<SongPlay> target)
{
    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
    if (!settings.Contains(AudioListKey)) throw new NotImplementedException(); // do something - list doesnt exist
    target = settings[AudioListKey] as IList<SongPlay>;
}