Подтвердить что ты не робот

Как добавить аннотации данных к частичным классам?

У меня есть автоматически сгенерированный класс с свойством на нем. Я хочу добавить некоторые аннотации данных к этому свойству в другом частичном классе того же типа. Как мне это сделать?

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 уже существует.

4b9b3361

Ответ 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; }
}