Xamarin.android 为什么资产位于不同的名称空间(取决于主活动或类)?

Xamarin.android 为什么资产位于不同的名称空间(取决于主活动或类)?,xamarin.android,Xamarin.android,如果我在主活动中,如果我想打开资产中的文件,我使用以下代码: using (Stream miFicheroOrigen = Assets.Open("configuration.xml")) {} 我可以看到名称空间是Android.Context.Res.AssetManager 但是,我希望有一个包含管理配置方法的类,因此我创建了这个类: internal class ConfigurationManager { } 但在这种情况下,我必须使用Android.Content.Resor

如果我在主活动中,如果我想打开资产中的文件,我使用以下代码:

using (Stream miFicheroOrigen = Assets.Open("configuration.xml"))
{}
我可以看到名称空间是Android.Context.Res.AssetManager

但是,我希望有一个包含管理配置方法的类,因此我创建了这个类:

internal class ConfigurationManager
{
}
但在这种情况下,我必须使用Android.Content.Resoruces.System.Assets,我不能在与主活动相同的命名空间中使用这些资产

这是可行的,但我想知道这是相同的资产还是不同的资产

可能是因为第一个是活动,第二个是普通类,但我不太明白为什么在第二个例子中我不能访问相同的名称空间

谢谢

我可以看到名称空间是Android.Context.Res.AssetManager

但在这种情况下,我必须使用Android.Content.Resoruces.System.Assets

你的问题似乎打错了字母。也许你想知道他们之间的区别如下:

VS

不同:

Android.Content.Res.AssetManager
:提供对应用程序原始资产文件的访问;有关大多数应用程序检索资源数据的方式,请参阅。此类提供了一个低级API,允许您打开和读取作为简单字节流捆绑在应用程序中的原始文件

Android.Content.Res.Resources
:用于访问应用程序资源的类。它位于应用程序的资产管理器之上(可通过Resources.Assets访问),并为从资产获取类型化数据提供了一个高级API。使用应用程序资源可以轻松地更新应用程序的各种特征,而无需修改代码,通过提供一组替代资源,您可以针对各种设备配置(例如不同语言和屏幕大小)优化应用程序这是开发在不同类型设备上兼容的Android应用程序的一个重要方面

Android.Content.Res.Resources.System
属性:返回一个全局共享资源对象,该对象仅提供对系统资源(无应用程序资源)的访问,并且未针对当前屏幕进行配置(不能使用维度单位,不会根据方向等进行更改)

相同

他们都可以获得Android.Content.Res.AssetManager

结果:因此您可以看到Android.Content.Res.Resources.System是一个全局共享资源对象,因此您可以从普通类获取。但是,这并不意味着无法从普通类获取Android.Content.Res.AssetManager。根据文档,它们只是api的高点和低点,文档建议使用这些方法(Android.Content.Res.Resources.System)来获取资源

Android.Content.Res.AssetManager assetManager = Android.Content.Res.Resources.System.Assets;