向 .NET 类添加动态属性
本文关键字:动态 属性 添加 NET | 更新日期: 2023-09-27 18:33:42
是否可以将我自己的自定义属性添加到任何类型的对象?
在此示例中,对象是列表,但我的意思是任何类型的对象(.NET 或自定义对象)。
例如,扩展List<string>
以添加一个名为 MyProperty
的额外属性:
List<string> myList = new List<string>();
myList.MyProperty = "some value";
然后调用一个方法ProcessList(List<string> list)
:
ProcessList(myList);
public void ProcessList(List<string> list)
{
// get the custom property value
string myprop = list.MyProperty.ToString();
....................
do other work
}
No. .NET 中没有"扩展属性"实现。 扩展方法更像是一个编译器技巧,并且只能作为静态方法工作,因为它们不需要自己的状态(至少不应该)。
属性需要一个支持字段,这将需要其他功能才能正确实现。
请注意,某些框架确实支持此功能。 例如,如果对象派生自 DependencyObject
,则可以使用附加属性来实现此功能。
不是你描述的方式。扩展方法可能是最接近的。
public static class QueryExtensions
{
public static bool HasMapping(this Demand role)
{
return role.DemandMappings.Count > 0;
}
}
您将像这样使用上面的示例:
var role = GetDemand(Request.QueryString["id"]);
if (role != null)
{
var mapped = role.HasMapping();
}