方法带有泛型类型约束,如何使用
本文关键字:何使用 约束 泛型类型 方法 | 更新日期: 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>;
}