Wex*_*Wex 2 c# default propertyinfo
一些代码:
foreach (System.Reflection.PropertyInfo pi in myObject.GetType().GetProperties())
{
if (pi.CanWrite)
{
object value = pi.GetValue(Properties, null);
// if (value is not default)
// {
X.addAttribute(pi.Name, value);
// }
}
}
Run Code Online (Sandbox Code Playgroud)
我想做的是,如果属性处于其 DefaultValue,则不调用“X.addAttribute...”行。我假设有某种方法可以获取属性的 DefaultValue,以便我可以进行比较?
出于我的目的,我试图获取由 DefaultValueAttribute 定义的“默认”值。
任何帮助表示赞赏,干杯。
下面是我用来获取任何运行时类型的默认值的方法,对于非值类型它将返回“null”,否则它将返回默认值类型(它包括缓存值类型以获得额外的性能):
private static readonly Dictionary<Type, object> DefaultValueTypes
= new Dictionary<Type, object>();
public static object GetDefaultValue(Type type)
{
if (!type.IsValueType) return null;
object defaultValue;
lock (DefaultValueTypes)
{
if (!DefaultValueTypes.TryGetValue(type, out defaultValue))
{
defaultValue = Activator.CreateInstance(type);
DefaultValueTypes[type] = defaultValue;
}
}
return defaultValue;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7742 次 |
| 最近记录: |