序列化类Xamarin.Forms

序列化类Xamarin.Forms,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我正在尝试序列化类,但我做不到。 我的课程如下: public class DadosTitulo { public string nome { get; set; } public string numeroCpfCnpj { get; set; } public string logradouro { get; set; } public string numero { get; set; } public string complemento { g

我正在尝试序列化类,但我做不到。 我的课程如下:

public class DadosTitulo
{
    public string nome { get; set; }
    public string numeroCpfCnpj { get; set; }
    public string logradouro { get; set; }
    public string numero { get; set; }
    public string complemento { get; set; }
    public string bairro { get; set; }
    public string cep { get; set; }
    public string municipio { get; set; }
    public string uf { get; set; }
    public double valor { get; set; }
    public string numeroDocumento { get; set; }
    public string dataVencimento { get; set; }
    public string celularDestino { get; set; }
    public bool registroProducao { get; set; }
}
在MainPage.xaml.cs中,我有:

private async void btnAdicionar_Clicked(object sender, EventArgs e)
{
    var retorno = "";
    var titulo = new DadosTitulo
    {
        nome = txtNome.Text,
        numeroCpfCnpj = txtNumeroCpfCnpj.Text,
        logradouro = txtLogradouro.Text,
        numero = txtNumero.Text,
        complemento = txtComplemento.Text,
        bairro = txtBairro.Text,
        cep = txtCep.Text,
        municipio = txtMunicipio.Text,
        uf = txtUF.Text,
        valor = Convert.ToDouble(txtValor.Text),
        numeroDocumento = txtNumeroDocumento.Text,
        dataVencimento = DataVencimento.Date.ToString("dd/MM/yyyy"),
        celularDestino = txtDddCelularDestino.Text + txtNumCelularDestino.Text,
        registroProducao = RegistraProducao
    };
    var registroService = new RegistroBoletoService();
    retorno = registroService.RegistrarBoleto(titulo);
    await DisplayAlert("Json", retorno, "OK");
}
MainPage.xaml中的属性值:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:AppRegistraBoletoXF"
             x:Class="AppRegistraBoletoXF.MainPage">

    <StackLayout Orientation="Vertical">
        <StackLayout>
            <Label Text="Registra Boleto" TextColor="Indigo" FontSize="Medium" />
        </StackLayout>
        <StackLayout>
            <Label Text="Informe os dados do Título:" TextColor="Black" FontSize="Small" />
        </StackLayout>
        <StackLayout>
            <Entry x:Name="txtNome" Placeholder="Nome" HorizontalOptions="Start" 
                    VerticalOptions="StartAndExpand" HeightRequest="35" WidthRequest="300" FontSize="Small"/>
            <Entry x:Name="txtNumeroCpfCnpj" Placeholder="CPF/CNPJ" HorizontalOptions="Start" 
                    VerticalOptions="StartAndExpand" HeightRequest="35" WidthRequest="300" FontSize="Small" />
            <StackLayout Orientation="Horizontal">
                <Entry x:Name="txtLogradouro" Placeholder="Logradouro" HorizontalOptions="StartAndExpand" VerticalOptions="Start" 
                        HeightRequest="35" WidthRequest="160" FontSize="Small" />
                <Entry x:Name="txtNumero" Placeholder="Número" HorizontalOptions="StartAndExpand" VerticalOptions="Start" 
                        HeightRequest="35" WidthRequest="50" FontSize="Small" />
                <Entry x:Name="txtComplemento" Placeholder="Complemento" HorizontalOptions="StartAndExpand" VerticalOptions="Start" 
                        HeightRequest="35" WidthRequest="90" FontSize="Small" />
            </StackLayout>
            <StackLayout Orientation="Horizontal">
                <Entry x:Name="txtBairro" Placeholder="Bairro" HorizontalOptions="StartAndExpand" VerticalOptions="Start" 
                        HeightRequest="35" WidthRequest="180" FontSize="Small" />
                <Entry x:Name="txtCep" Placeholder="CEP" HorizontalOptions="StartAndExpand" VerticalOptions="Start" 
                        HeightRequest="35" WidthRequest="120" FontSize="Small" />
            </StackLayout>
            <StackLayout Orientation="Horizontal">
                <Entry x:Name="txtMunicipio" Placeholder="Município" HorizontalOptions="StartAndExpand" VerticalOptions="Start" 
                        HeightRequest="35" WidthRequest="250" FontSize="Small" />
                <Entry x:Name="txtUF" Placeholder="UF" HorizontalOptions="StartAndExpand" VerticalOptions="Start" 
                        HeightRequest="35" WidthRequest="50" FontSize="Small" />
            </StackLayout>
            <StackLayout Orientation="Horizontal">
                <Entry x:Name="txtDddCelularDestino" Placeholder="DDD" HorizontalOptions="StartAndExpand" VerticalOptions="Start" 
                        HeightRequest="35" WidthRequest="50" FontSize="Small" />
                <Entry x:Name="txtNumCelularDestino" Placeholder="Celular Destino" HorizontalOptions="StartAndExpand" VerticalOptions="Start" 
                        HeightRequest="35" WidthRequest="250" FontSize="Small" />
            </StackLayout>

            <Entry x:Name="txtNumeroDocumento" Placeholder="Número do Título" HorizontalOptions="Start" 
                    VerticalOptions="StartAndExpand" HeightRequest="35" WidthRequest="300" FontSize="Small"/>
            <Entry x:Name="txtValor" Placeholder="Valor do Título" HorizontalOptions="Start" 
                    VerticalOptions="StartAndExpand" HeightRequest="35" WidthRequest="300" FontSize="Small"/>

            <StackLayout Orientation="Horizontal">
                <Label Text="Registro em Produção: " TextColor="Black" FontSize="Small" HorizontalOptions="Start" 
                    VerticalOptions="StartAndExpand" />
                <DatePicker DateSelected="DataSelecionada" HorizontalOptions="Start"  VerticalOptions="StartAndExpand">
                    <DatePicker.Format>dd/MM/yyyy</DatePicker.Format>
                </DatePicker>
            </StackLayout>

            <StackLayout Orientation="Horizontal">
                <Label Text="Registro em Produção: " TextColor="Black" FontSize="Small" HorizontalOptions="Center" 
                    VerticalOptions="StartAndExpand" />
                <Switch IsToggled="False"  Toggled="RegistrarProducao" HorizontalOptions="Center" 
                    VerticalOptions="StartAndExpand" />
            </StackLayout>


            <Button HorizontalOptions="FillAndExpand" VerticalOptions="StartAndExpand" HeightRequest="40" Text="Registrar Título" 
                    Clicked="btnAdicionar_Clicked" FontSize="Small"/>
        </StackLayout>

    </StackLayout>

</ContentPage>
数据始终返回“{}”:

我在同一个解决方案中从Console项目调用RegistroBoletoService进行了测试,结果与预期的一样:数据包含json

我注意到一个有趣的点:当我在MainPage.xaml.cs中实例化该类时,该行为与Console项目不同,类中有非公共成员:

控制台实例化:

我认为这就是问题所在,有人知道发生了什么吗?为什么当我在主页上实例化这个类时,我从控制台得到了不同的行为

非常感谢,对不起我的英语


注:.NET标准中的项目;在这种情况下,我没有使用MVVM;我尝试仅使用链接器SDK程序集进行测试,但没有进行测试。

您在哪里更改DadosTitulo类的属性值?在本例中,我没有在任何地方更改这些值,我只是想说明类中非公共成员的问题。然而,我做了类似的例子,结果是一样的:私有异步void btadicionar_Clicked(objectsender,EventArgs e){var returno=“”;var titulo=new DadosTitulo{nome=txtNome.Text,numeriocpfcnpj=txtnumeriocpfcnpj.Text,logradouro=txtLogradouro.Text,numerio=txtnumerio.Text,…}好的,我问这个问题是因为你得到的是空值,因为你的属性几乎是空的(null),您能否编辑此问题并向我们提供xaml和c#中的代码,您在其中设置此类属性的值。您是否尝试摆脱接口继承并使用具体的类引用运行代码?我正在考虑序列化方法推断接口类型而不是c的可能性oncrete classHi@Diegrafaelsouza,我尝试了一个concret类,结果是一样的。我正在编辑concret类的帖子,并按照Almir Vuk的建议更改属性值。谢谢。
public string RegistrarBoleto(DadosTitulo dadosTitulo)
{
    var data = JsonConvert.SerializeObject(dadosTitulo);

    return data;
}