C# 扩展属性,同时插入新项
这是我的代码:C# 扩展属性,同时插入新项,c#,.net,linq,properties,extend,C#,.net,Linq,Properties,Extend,这是我的代码: var myList = myPage.News.Cast<MyNew>(); MyNew有20个属性名称、标题、日期、地点等,但缺少一个,例如属性电话 无法重新创建我的整个结构,它也是从一个DLL变成的,所以我想更快地在列表中添加一个名为Tel的MyNew属性。因此,在列表中插入期间扩展类。否,但您可以创建一个匿名类型,其中包括原始类型和新列: var myList = myPage.News .Cast<MyNew&g
var myList = myPage.News.Cast<MyNew>();
MyNew有20个属性名称、标题、日期、地点等,但缺少一个,例如属性电话
无法重新创建我的整个结构,它也是从一个DLL变成的,所以我想更快地在列表中添加一个名为Tel的MyNew属性。因此,在列表中插入期间扩展类。否,但您可以创建一个匿名类型,其中包括原始类型和新列:
var myList = myPage.News
.Cast<MyNew>()
.Select( new { m => MyNew = m,
Tel = [formula for tel]
}
);
不可以,但您可以创建一个匿名类型,其中包括原始类型和新列:
var myList = myPage.News
.Cast<MyNew>()
.Select( new { m => MyNew = m,
Tel = [formula for tel]
}
);
但请看下面克里斯·辛克莱的评论
但是请参见下面Chris Sinclair的评论您应该能够使用类似这样的部分类来扩展MyNew:
public partial class MyNew
{
public int Tel { get; set; }
}
Tel将像任何其他属性一样可用。您应该能够使用如下部分类扩展MyNew:
public partial class MyNew
{
public int Tel { get; set; }
}
Tel将像任何其他属性一样可用。您可以将其作为名为Tel的扩展方法添加到MyNew中?不幸的是,没有扩展属性。MyNew类是否被密封,好像它不是。您可能可以从类继承添加您需要的任何属性。您是否希望此属性在编译时可用,以便您可以在C代码中引用它,或者它仅参与运行时内容?您可以将其添加为名为Tel的扩展方法也许是为了我的新朋友?不幸的是,没有扩展属性。MyNew类是否被密封,好像它不是。您可能可以从类继承添加您需要的任何属性。您是否希望此属性在编译时可用,以便您可以在C代码中引用它,或者它只参与运行时内容?假设News是IEnumerable,强制转换将失败,因为它们实际上不是子类类型的对象。我不知道强制转换是如此棘手,强制转换的行为在.NET 3.5和.NET 3.5 SP1之间发生了更改—只需将其视为对子类的文字类型强制转换即可。即使存在显式/隐式转换,它也不会执行任何转换。但是由于MyNewExtended扩展了MyNew,所以假设News是IEnumerable,您无论如何都无法编写用户定义的转换,强制转换将失败,因为它们实际上不是子类类型的对象。我不知道强制转换是如此棘手,强制转换的行为在.NET 3.5和.NET 3.5 SP1之间发生了更改—只需将其视为对子类的文字类型强制转换即可。即使存在显式/隐式转换,它也不会执行任何转换。但是,由于MyNewExtended扩展了MyNew,因此您无论如何都无法编写用户定义的转换。不能使用partial,因为该类已在另一个DLL中编译。partial只是跨文件拆分类的一种方法。首先,课堂必须是局部的。-1 Vaze重新阅读OP如何在他的问题中解释他的问题。部分课程没用,对不起。你说得对。我没有看到它来自另一个DLL。无法使用partial,因为该类已在另一个DLL中编译。partial只是一种跨文件拆分类的方法。首先,课堂必须是局部的。-1 Vaze重新阅读OP如何在他的问题中解释他的问题。部分课程没用,对不起。你说得对。我没有看到它来自另一个DLL。