2011-05-25 40 views
12

我有一個自動生成的類,其上有一個屬性。我想添加一些數據註釋到另一個相同類型的部分類中的屬性。我會怎麼做?如何將數據註釋添加到部分類?

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屬性已經存在。

+0

如果可能的話,我會感到驚訝 - 你最好打賭的是改變自動生成的類是如何在那裏指定註釋的。 – 2011-05-25 22:35:43

+1

http://stackoverflow.com/questions/1232497/adding-dataannontations-to-generated-partial-classes – Reddog 2011-05-25 22:40:47

+0

@ Will - Ya,我得到的錯誤表明這是不可能的,希望有一個比改變自動代碼更好的方法。 – 2011-05-25 22:42:03

回答

16

貌似我想通了類似於上面使用MetadataTypeAttribute的鏈接以不同的方式:

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

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

我用下面也支持在同一個表的多個外鍵引用同一個表。例如,這個人有兩個都是Person類的父母(父親和母親)。

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