公共C#属性在Xamarin Forms Android上是不可见的

时间:2017-06-15 18:14:49

标签: c# xamarin.android xamarin.forms

我的Xamarin Forms应用在Android上运行时表现得很奇怪。当我在UWP上运行时,一切似乎都运行良好,但是当我在Android上启动相同的应用程序时,我绑定的模型的公共属性似乎消失了,好像它们不存在一样。

模型定义为如下所示的界面:

public interface IRegionModel
{
    string Id { get; set; }
    string Name { get; set; }
    string ShortName { get; set; }
    string UrlName { get; set; }
    string Description { get; set; }
    string CityId { get; set; }
}

实施几乎完全相同:

public class RegionModel : IRegionModel
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string ShortName { get; set; }
    public string UrlName { get; set; }
    public string Description { get; set; }
    public string CityId { get; set; }
}

我正在使用RegionModel类型的可观察集合填充我的ViewModel:

public class RegionListViewModel : ViewModelBase
    {
        public ObservableCollection<IRegionModel> Regions { get; set; } = new ObservableCollection<IRegionModel>();

        protected string CityId { get; set; }

        public void Init(string cityId)
        {
            CityId = cityId;
        }

        public async override void Start()
        {
            base.Start();

            LoadDesignData();

            IsLoading = false;
        }

        protected override void LoadDesignData()
        {
            base.LoadDesignData();

            for (var i = 1; i < 5; i++)
            {
                var model = new RegionModel()
                {
                    Id = i.ToString(),
                    Description = "Region description " + i.ToString(),
                    ShortName = "Downtown",
                    Name = "Downtown",
                    UrlName = "Downtown",
                    CityId = "mcallen"
                };

                Regions.Add(model);
            }
        }
    }

如您所见,我可以访问模型的每个属性,并使用我的属性填充它们。

然而,当我在Android上运行应用程序时,这些属性立即不可见:

properties set but missing!

我没有任何例外或错误,但属性根本就没有。

我想也许是因为陈旧的二进制文件(如此处所示:C# some public properties are not accessible, actually completely missing

但是,我进行了全面清理和手动清理,在每个项目上手动清除所有bin / obj文件夹并重建它。此外,我做了一些代码更改和XAML更改,并且这些更改正在显示,因此项目肯定会更新......

这里还有什么可能是错的?物业如何消失?

1 个答案:

答案 0 :(得分:1)

如果你已经链接了你的程序集,那么分析器可能无法确定这些属性是否真正被使用并且已经剥离它们。

将链接选项设置为“仅限SDK”,它应该可以正常工作。