基本上,我有一个带有一组属性的Text。
我想用其他类的属性填充它们。
我可以使用方法重载,但由于我基本上做了多次完全相同的事情,所以在一种方法中做它似乎更清晰。
我拥有和工作的东西:
private Text SetText(Book book)
{
return new Text{
Media = book.GetType().ToString();
Pages = book.Pages,
Words = book.Words,
}
private Text SetText(Letter letter)
{
return new Text{
Media = letter.GetType().ToString();
Pages = letter.Pages,
Words = letter.Words,
}
现在有办法a)有一种方法可以同时适用于Book和Letter,b)可以自动填写页面和单词,请记住,Letter和Book也有其他属性。
类似
private Text SetText<T>(T data)
{
return new Text
{
Media = data.GetType().ToString(),
Pages = data.Pages,
Words = data.Words,
}
}
如果问题可以得到回答,那将有助于我减轻成本。
如果问题b得到回答,这将是一个很好的奖励。
答案 0 :(得分:0)
“动态”类型是需要的。
private Text GetText(object data)
{
dynamic objectData = Convert.ChangeType(data, data.GetType());
return new Text
{
Media = objectData.GetType().Name,
Pages = objectData.Pages,
Words = objectData.Words,
}
}
这是有效的,因为它只在运行时运行,因此允许动态输入。