这里的第一个问题,但是一个沉重的stackflow用户/爱好者。
我遇到的问题是属性始终为null。以下显示了如何使用该属性:
[Format("d")]
public DateTime InvoiceDate { get; private set; }
属性定义如下:
using System;
namespace XXX.Aspnet.Binding
{
[AttributeUsage(AttributeTargets.Property)]
public class FormatAttribute : Attribute
{
#region Properties
public string Format { get; set; }
#endregion
#region Constructors
public FormatAttribute(string format)
{
Format = format;
}
#endregion
}
}
我已经编写了一个扩展方法作为获取属性的代码,如果有点难看。其内容如下:
using System.Linq;
using System.Reflection;
namespace XXX.Aspnet.Binding.Extensions
{
internal static class GetCustomAttributeExtension
{
#region GetCustomAttribute
public static TAttribute GetCustomAttribute<TAttribute>(this PropertyInfo propertyInfo, bool inherit = false)
{
return propertyInfo.GetCustomAttributes(typeof(TAttribute), inherit).Cast<TAttribute>().FirstOrDefault();
}
#endregion
}
}
最后,检索属性的调用如下:
var formatAttribute = pi.GetCustomAttribute<FormatAttribute>();
有谁能说明为什么这不起作用?我也试过没有扩展方法的传统方式。
被修改
根据Sebi关于机会的建议使得setter私有化,我们得到了解决,而其他人发现代码有用