我想按照课程BarService<T1> service;
中所述设置本地变量Foo
。
代码如下:
class Foo
{
// error i got here and want to use this instead of using dynamic
BarService<T> service;
//dynamic service
internal void SetBarService<T>() where T : class, new()
{
service = new BarService<T>();
}
internal IEnumerable<T2> GetAll<T2>() where T2 :class
{
return service.GetAll<T2>();
}
}
public class BarService<T> where T : class
{
internal IEnumerable<T> GetAll<T>()
{
throw new NotImplementedException();
}
}
有人可以为我清除错误吗?
答案 0 :(得分:2)
如果你想使用开放泛型类型作为你的字段的类型,那么你必须使整个类通用,而不仅仅是方法:
class Foo<T> where T : class, new()
{
BarService<T> service;
internal void SetBarService()
{
service = new BarService<T>();
}
internal IEnumerable<T2> GetAll<T2>() where T2 :class
{
return service.GetAll<T2>();
}
}
目前还不清楚GetAll<T2>()
与其他代码之间的关系是什么,但幸运的是,上述方法可行。
当然,您是否可以将类Foo
实际放入泛型类中取决于它在代码中的其他位置的使用方式。你的问题没有足够的背景知道是否会有其他问题。但以上是基本思路。