公共C#属性在Xamarin窗体上不可见
我的Xamarin Forms应用程序在Android上运行时表现得很奇怪。当我在UWP上运行时,一切似乎都正常,但当我在Android上启动相同的应用程序时,我绑定的模型的公共属性似乎消失了,好像它们不存在一样 该模型定义为一个接口,如下所示:公共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; }
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时,它只起作用!请转发作为答复,以便我可以接受!顺便问一下,这个选项到底意味着什么?为什么我不想链接我的程序集?您确实禁用了程序集的链接,这会阻止优化器删除未使用的代码,这就是为什么要使用它。如果代码工作正常,链接所有内容将减少包大小,因为死代码将被删除