以下のように、インターフェイスとそのインターフェイスを継承する2つのクラスがあります
public interface ILeader
{
int ID { set; get; }
string Name { set; get; }
}
public class User : ILeader
{
public int ID { set; get; }
public string Name { set; get; }
}
public class Group : ILeader
{
public int ID { set; get; }
public string Name { set; get; }
}
ILeader
今、タイプのパラメーターと ILeader の IList を持つ 2 つのメソッドがあります。
public void Change(ILeader leader)
{
//do some thing
}
public void ChangeList(IList<ILeader> leaderList)
{
//do some thing
}
Group
これで、またはいずれかのオブジェクトUser
を Change メソッドに渡すことができ、機能します。List
しかし、 toメソッドで同じことをしようとすると、ChangeList
コンパイル時エラーが発生します。
IList<User> userList=new List<User>();
userList.Add(new User { ID=1, Name ="Happy"});
Change(userList[0]); //this works
ChangeList(userList); //this throws compile error
エラーは
cannot convert from List<User> to List<ILeader>
とChangeList
の両方のリストを渡すことができるようにメソッドを機能させるにはどうすればよいですか?Users
Groups