Как добавить аннотации данных к частичным классам?
У меня есть автоматически сгенерированный класс с свойством на нем. Я хочу добавить некоторые аннотации данных к этому свойству в другом частичном классе того же типа. Как мне это сделать?
namespace MyApp.BusinessObjects
{
[DataContract(IsReference = true)]
public partial class SomeClass: IObjectWithChangeTracker, INotifyPropertyChanged
{
[DataMember]
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged("Name");
}
}
}
private string _name;
}
}
а в другом файле:
namespace MyApp.BusinessObjects
{
public partial class SomeClass
{
private SomeClass()
{
}
[Required]
public string Name{ get; set; }
}
}
В настоящее время возникает ошибка, указывающая, что свойство name уже существует.
Ответы
Ответ 1
Похоже, я понял другой способ, похожий на ссылку выше, используя MetadataTypeAttribute
:
namespace MyApp.BusinessObjects
{
[MetadataTypeAttribute(typeof(SomeClass.Metadata))]{
public partial class SomeClass
{
internal sealed class Metadata
{
private Metadata()
{
}
[Required]
public string Name{ get; set; }
}
}
}
Ответ 2
Я использую ниже, чтобы также поддерживать несколько внешних ключей в той же таблице, которые относятся к одной и той же таблице. Например, у человека есть два родителя (Отец и Мать), которые оба класса Лица.
[MetadataTypeAttribute(typeof(SomeClassCustomMetaData))]
public partial class SomeClass
{
}
public class SomeClassCustomMetaData
{
[Required]
public string Name { get; set; }
[InverseProperty("Father")]
public virtual Parent ParentClass { get; set; }
[InverseProperty("Mother")]
public virtual Parent ParentClass1 { get; set; }
}