Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
公共C#属性在Xamarin窗体上不可见_C#_Xamarin.android_Xamarin.forms - Fatal编程技术网

公共C#属性在Xamarin窗体上不可见

公共C#属性在Xamarin窗体上不可见,c#,xamarin.android,xamarin.forms,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; }

我的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);
            }
        }
    }
公共类RegionListViewModel:ViewModelBase { 公共ObservableCollection区域{get;set;}=new ObservableCollection(); 受保护字符串CityId{get;set;} 公共void Init(字符串cityId) { CityId=CityId; } 公共异步重写void Start() { base.Start(); LoadDesignData(); IsLoading=false; } 受保护的覆盖无效LoadDesignData() { base.LoadDesignData(); 对于(变量i=1;i<5;i++) { var模型=新区域模型() { Id=i.ToString(), Description=“Region Description”+i.ToString(), ShortName=“市区”, Name=“市区”, UrlName=“市区”, CityId=“麦卡伦” }; 区域。添加(模型); } } } 如您所见,我可以访问模型的每个属性,并用我的属性填充它们

但是,当我在android上运行应用程序时,这些属性立即不可见:

我没有得到任何异常或错误,但属性根本不存在

我认为这可能是由于过时的二进制文件(正如这里所建议的:)

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


这里还有什么可能出错的?属性怎么会消失?

如果您链接了程序集,则分析器可能无法确定这些属性是否被真正使用,并且已将其剥离


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

检查链接选项,如果您选择了“全部链接”,那么如果分析器无法找到使用方法,它将删除“未使用的”属性。此外,您确定它们不存在,并且调试器没有问题吗?您是否尝试在声明后添加代码以检索值?我有时看到这样的行为,调试器在调试时无法检索所有数据。该死的,就是这样!链接是SDK和用户程序集。当我改为“无”时,它不会生成,但当我改为SDK时,它只起作用!请转发作为答复,以便我可以接受!顺便问一下,这个选项到底意味着什么?为什么我不想链接我的程序集?您确实禁用了程序集的链接,这会阻止优化器删除未使用的代码,这就是为什么要使用它。如果代码工作正常,链接所有内容将减少包大小,因为死代码将被删除