是否可以将自己的自定义属性添加到任何类型的对象中?
在这个例子中,对象是List,但我的意思是任何类型的对象(.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
}
答案 0 :(得分:1)
没有。 .NET中没有“扩展属性”实现。扩展方法更多的是编译技巧,只能作为静态方法使用,因为它们不需要自己的状态(至少不应该)。
属性需要一个支持字段,这需要其他功能才能正确实现。
请注意,某些框架确实支持此功能。例如,如果您的对象派生自DependencyObject
,则可以使用Attached Properties来实现此功能。
答案 1 :(得分:0)
不是你描述的方式。扩展方法可能是你最接近的。
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();
}