[英]Xamarin PCL how to add data attribute to existing partial classes (fields)
我们有一个带有字段ID的自动生成的类,我们想为其添加数据属性[PrimaryKey]。 我们遇到的问题是,即使添加了System.ComponentModel.DataAnnotations包,它也无法识别[MetadataType]。
具有数据属性的代码类:
[MetadataType(typeof(ZoekenMetaData))] // this where we get the error on Metadata
public partial class Zoeken
{
internal sealed class ZoekenMetaData
{
[PrimaryKey]
public int UserId { get; set; }
}
}
自动生成的类:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name = "Zoeken", Namespace = "http://schemas.datacontract.org/2004/07/OurWCF")]
public partial class Zoeken : object, System.ComponentModel.INotifyPropertyChanged
{
private string AdresField;
private string GemeenteField;
private System.Guid IdField;
private string NaamField;
private string TelefoonField;
private string TypeField;
[System.Runtime.Serialization.DataMemberAttribute()]
public string Adres
{
get
{
return String.IsNullOrEmpty(this.AdresField) ? "Onbekend" : this.AdresField;
}
set
{
if ((object.ReferenceEquals(this.AdresField, value) != true))
{
this.AdresField = value;
this.RaisePropertyChanged("Adres");
}
}
}
[System.Runtime.Serialization.DataMemberAttribute()]
public string Gemeente
{
get
{
//return String.IsNullOrEmpty(this.GemeenteField) ? "Onbekend" : this.GemeenteField;
return this.GemeenteField;
}
set
{
if ((object.ReferenceEquals(this.GemeenteField, value) != true))
{
this.GemeenteField = value;
this.RaisePropertyChanged("Gemeente");
}
}
}
[System.Runtime.Serialization.DataMemberAttribute()]
public System.Guid Id
{
get
{
return this.IdField;
}
set
{
if ((this.IdField.Equals(value) != true))
{
this.IdField = value;
this.RaisePropertyChanged("Id");
}
}
}
[System.Runtime.Serialization.DataMemberAttribute()]
public string Naam
{
get
{
return String.IsNullOrEmpty(this.NaamField) ? "Onbekend" : this.NaamField;
}
set
{
if ((object.ReferenceEquals(this.NaamField, value) != true))
{
this.NaamField = value;
this.RaisePropertyChanged("Naam");
}
}
}
[System.Runtime.Serialization.DataMemberAttribute()]
public string Telefoon
{
get
{
return String.IsNullOrEmpty(this.TelefoonField) ? "Onbekend" : this.TelefoonField;
}
set
{
if ((object.ReferenceEquals(this.TelefoonField, value) != true))
{
this.TelefoonField = value;
this.RaisePropertyChanged("Telefoon");
}
}
}
[System.Runtime.Serialization.DataMemberAttribute()]
public string Type
{
get
{
return String.IsNullOrEmpty(this.TypeField) ? "Onbekend" : this.TypeField;
}
set
{
if ((object.ReferenceEquals(this.TypeField, value) != true))
{
this.TypeField = value;
this.RaisePropertyChanged("Type");
}
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null))
{
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
这也是错误ErrorMetadatType的屏幕截图
编辑尝试更改配置文件: EditImage
这可能与您要定位的PCL配置文件有关。 看看本指南这里丹·里格比。 我看到配置文件44带有您要查找的注释。
配置文件44(.NET 4.5.1,Windows 8.1)(netstandard 1.2)
Xamarin for Visual Studio 4.1+中受支持
与配置文件151类似,但包括对数据注释和WCF API子集的访问:
- System.ComponentModel.Annotations
- System.ComponentModel.DataAnnotations System.ServiceModel
- System.ServiceModel.Duplex System.ServiceModel.Http
- System.ServiceModel.NetTcp System.ServiceModel.Primitives
- System.ServiceModel.Security最新和前瞻性配置文件(以向后兼容为代价)
要更改此配置文件,请进入PCL项目的属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.