开发者

How to add data annotations to partial class?

开发者 https://www.devze.com 2023-03-08 15:43 出处:网络
I have an auto generated class with a property on it.I want to add some data annotations to that property in another partial class of the same type. 开发者_JAVA百科 How would I do that?

I have an auto generated class with a property on it. I want to add some data annotations to that property in another partial class of the same type. 开发者_JAVA百科 How would I do that?

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;
    }
}

and in another file I have:

namespace MyApp.BusinessObjects
{
    public partial class SomeClass
    {
        private SomeClass()
        {
        }

        [Required]
        public string Name{ get; set; }
    }
}

Currently, I get an error stating that the name property already exists.


Looks like I figured out a different way similar to the link above using MetadataTypeAttribute:

namespace MyApp.BusinessObjects
{
    [MetadataTypeAttribute(typeof(SomeClass.Metadata))]{
    public partial class SomeClass
    {
        internal sealed class Metadata
        {
            private Metadata()
            {
            }

            [Required]
            public string Name{ get; set; }
        }
    }
}


I'm using the below to also support multiple foreign keys in the same table that refer to the same table. Example, the person has two parents (Father and Mother) who are both Person class.

[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; }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消