如何定义属性以容纳泛型接口类型
本文关键字:泛型 接口类型 属性 何定义 定义 | 更新日期: 2023-09-27 17:54:34
考虑下面的接口…
public interface ILibraryService<T>
where T : Library
{
ReadOnlyObservableCollection<T> AvailableLibraries { get; }
}
我想定义一个静态属性,它可以容纳任何实现这个接口的对象,就像下面的伪代码…
public static class Services
{
public static ILibraryService<T> LibraryService { get; set; }
}
…但我不知道如何定义这个属性。我知道这很简单,但我就是看不出来
这些是你想要的吗?据我所知,微软故意避免给我们在属性上添加类型子句的能力。
public static class Services
{
public static ILibraryService<T> GetLibraryService<T>()
where T : Library
{
return null; // ...
}
}
public static class Services<T>
where T : Library
{
public static ILibraryService<T> LibraryService { get; set; }
}
public static class Services<T>
where T : ILibraryService<Library>
{
public static T LibraryService { get; set; }
}
public static class Services<TService, TLibrary>
where TService : ILibraryService<TLibrary>
where TLibrary : Library
{
public static ILibraryService<TLibrary> LibraryService { get; set; }
}