繁体   English   中英

Xamarin PCL如何将数据属性添加到现有的部分类(字段)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM