如何将适配器模式应用于集合?
鉴于下面的两个类,我该如何 将
List
转换为列出
?
编辑:这是一个捏造的例子。我想要说明的一点是,我无法修改 Person
类,并且当我们实例化 List
任意编号
/代码>。
EDIT2:我知道你们中的许多人会觉得这难以置信,但是这段代码将部署到 Windows-Server-2000 计算机上,这意味着它必须与 .NET 2.0 一起工作。 [是的——我也觉得这令人难以置信。]
public class Person
{
private string _lastName;
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
private string _firstName;
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
}
public class Person2 : Person
{
private readonly int _arbitraryNumber;
public Person2(int arbitraryNumber)
{
_arbitraryNumber = arbitraryNumber;
}
public string FullName
{
get
{
return String.Format("{0}, {1} - {2}", LastName, FirstName, _arbitraryNumber);
}
}
}
Given the two classes below, how can I
convertList<Person>
toList<Person2>
?
EDIT: This is a fabricated example. The point I'm trying to make is that I can't modify the Person
class, and we'll know arbitraryNumber
when we instantiate List<Person2>
.
EDIT2: I know that many of you will find this unbelievable, but this code will be deployed to a Windows-Server-2000 machine, which means that it must work with .NET 2.0. [Yes - I find this to be unbelievable as well.]
public class Person
{
private string _lastName;
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
private string _firstName;
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
}
public class Person2 : Person
{
private readonly int _arbitraryNumber;
public Person2(int arbitraryNumber)
{
_arbitraryNumber = arbitraryNumber;
}
public string FullName
{
get
{
return String.Format("{0}, {1} - {2}", LastName, FirstName, _arbitraryNumber);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为Person2需要改为适配器。像这样
然后集合上的适配器就更容易了。
或者对于.NET 2
I think Person2 needs to change to be an adapter. Something like this
Then the adapter on the collection is easier.
Or for .NET 2