我创建了一个IEnumerable方法,它接受一个类型为PERSON的IEnumerable,它交换员工的名字和姓氏(他们目前将它们添加到一个字段中的数据库中("John Smith","Craig Robertson")等.
我有另一个名为ProjectPerson的IEnumerable,它有类似但不同的数据,我想交换它们的名字和姓氏.
IEnumerables都有"Name"作为字段,因此代码适用于两者,我只是希望能够重新使用此代码而不创建重载,IEnumerabe<Person>而另一个IEnumerable<ProjectPerson>在每个内部使用相同的代码.
有没有办法设置可以被不同类型使用的IEnumerable方法?也许传入Type作为参数然后投射?
我创建了一个名为IPerson的接口:
public interface IPerson
{
string Name { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我有以下内容:
public class Person: IPerson {..}
public class ProjectPerson: IPerson {..}
Run Code Online (Sandbox Code Playgroud)
我的方法如下所示:
private void IEnumerable<IPerson> SwapFirstAndLastNames(IEnumerable<IPerson> persons)
{
foreach (var employee in persons)
{
//do the swapping
}
return persons;
}
Run Code Online (Sandbox Code Playgroud)
我使用这两行在类中的其他地方调用此方法:
_projectPerson = SwapFirstAndLastNames(projectpersons)
_person = SwapFirstAndLastNames(person);
Run Code Online (Sandbox Code Playgroud)
使用上面的方法我得到一个错误,该方法说"无法从ProjectPerson转换为IPerson(与Person转换为IPerson)"以及"SwapFirstAndLastNames(IEnumerable)的最佳重载方法匹配具有一些无效参数.
person和projectPerson都是IENumerable类型(带下划线的那些),并且每个中使用的数据在别处用于填充数据网格等.所以我基本上寻找一个采用任何类型的IEnumerable的方法,交换IEnumerable.Name字段(我已经有了代码来执行此操作),然后返回交换的IEnumerable数据.我有一个单一类型的工作.