38 lines
791 B
C#
38 lines
791 B
C#
|
using System.ComponentModel.DataAnnotations;
|
|||
|
using System.Reflection;
|
|||
|
|
|||
|
namespace SocialPub.ClientModels
|
|||
|
{
|
|||
|
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
|
|||
|
public class AtLeastOnePropertyAttribute : ValidationAttribute
|
|||
|
{
|
|||
|
private string[] PropertyList { get; set; }
|
|||
|
|
|||
|
public AtLeastOnePropertyAttribute(params string[] propertyList)
|
|||
|
{
|
|||
|
PropertyList = propertyList;
|
|||
|
}
|
|||
|
|
|||
|
public override object TypeId
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return this;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public override bool IsValid(object value)
|
|||
|
{
|
|||
|
PropertyInfo propertyInfo;
|
|||
|
foreach (string propertyName in PropertyList)
|
|||
|
{
|
|||
|
propertyInfo = value.GetType().GetProperty(propertyName);
|
|||
|
|
|||
|
if (propertyInfo != null && propertyInfo.GetValue(value, null) != null)
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|