[英]Generics and Inheritance Problem
我很想說這個問題與我的通用體系結構有關,但是無論哪種方式,作為示例進行展示都可能比描述起來容易。
public class AppUserBase
{
}
public class AppUserAbc : AppUserBase
{
}
public class ManagerBase<T> where T : AppUserBase
{
protected AppUserCollection<T> _users = new AppUserCollection<T>();
}
public class ManagerAbc : ManagerBase<AppUserAbc>
{
}
public static class Program
{
public static void Main()
{
ManagerAbc x = new ManagerAbc();
DoSomething(x); //fails
}
public static void DoSomething<M,U>(ManagerBase<AppUserBase> manager) where M : ManagerBase<U> where U : AppUserBase
{
//do something!
}
}
我希望我想做的事情很容易理解,我應該做的事情甚至更容易向我解釋:-)。
這是因為您有兩個類型參數,但是方法簽名中只有一個,因此無法同時推斷兩個參數。 另一個不需要。 將方法簽名更改為:
public static void DoSomething<U>(ManagerBase<U> manager)
where U : AppUserBase
{
//do something!
}
您可能知道,那需要工作。 原因是ManagerAbc
的類型不是ManagerBase<AppUserBase>
。 通用部分是同一類型沒有幫助。 您可以嘗試更改為:
public static void DoSomething<M,U>(ManagerBase<U> manager) where M : Manager<U> where U : AppUserBase
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.