- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在读取一些针对移动平台的 .Net 文件,所以我使用的是 PCL。我注意到,如果我添加/更改我的目标平台,我的装配选项会有很大的不同。一般来说,在 PCL 中获得最大数量的程序集的最佳方法是什么?
这里有一些更具体的内容:我想使用 System.Reflection.Assembly.GetExecutingAssembly();
和 System.IO.Path
到目前为止,我只能得到一个或另一个。有没有人找到同时获得两者的方法?
这是我要实现的类:
public class ContentProviderImplementation : IContentProvider
{
private static Assembly _CurrentAssembly;
private Assembly CurrentAssembly
{
get
{
if (_CurrentAssembly == null)
{
_CurrentAssembly = Assembly.GetExecutingAssembly();
}
return _CurrentAssembly;
}
}
public StreamReader LoadContent(string relativePath)
{
string localXMLUrl = Path.Combine(Path.GetDirectoryName(CurrentAssembly.GetName().CodeBase), relativePath);
return new StreamReader(File.OpenRead(new Uri(localXMLUrl).LocalPath));
}
}
为多个移动平台实现此功能的最佳概念方法是什么(代码细节确定,但我不想要直接的解决方案,除非它只是在正确的 PCL 程序集上获得范围)?特别是:IOS、Android、Windows 8.1 和 Windows 手机。
这是最相关的 SO 问题的答案:
Portable class libraries allow you to work with namespaces and classes that exist in all the platforms that you're targeting. .Net 4.5 (assuming you mean the full desktop-WinForms/WPF), Windows 8 and Windows Phone 8 all do file access very differently and have different files available to them. Where files can be accessed from also differs greatly: embedded content; embedded resources; isolated storage; shared folders; the full file system. These aren't all available on all the platforms you mention.
Short answer. You probably can't do what you're after. File system access varies dramatically across platforms and typically has to be done differently for each platform. What you can do is define an interface for file access (open, read, save, etc.) that your PCL can use and then create platform specific instances that you pass to the PCL as needed.
相关 SO 问题的 URL:C# PCL Reading from File
此外,我喜欢说到做到。如果我错误地使用了任何编程术语,请告诉我。我对软件领域还很陌生!谢谢大家!
最佳答案
In general, what is the best way to get the max amount of assemblies in the PCL?
这并不是关于程序集的数量,而是关于您将能够使用的 API。
一般来说,您的 PCL 针对的平台越少,您将能够使用的更多 API。此外,您选择的所有平台的最新版本,您将获得的更多 API。
对于完全可重用的库,例如 JSON.NET,您可能希望面向尽可能多的平台。但是,应用程序中的 PCL 使用通常更受应用程序需求的限制。为获得最佳体验,请定位您今天需要的平台,并包括您知道明天将需要的平台,但不要只选中所有框 - 您只会限制自己。
I'd like to use
Assembly.GetExecutingAssembly()
此 API 已弃用(与 Assembly.GetCallingAssembly
一样)。这并不是说你错过了很多。在实例方法中,您可以简单地使用 GetType().GetTypeInfo().Assembly
。在静态方法中,您可以将其替换为 typeof(TheTypeYourMethodIsIn).GetTypeInfo().Assembly
。
请注意 GetTypeInfo()
是 .NET 4.5 中添加的新方法。在旧平台上,您只需省略对 GetTypeInfo()
的调用。有关更多详细信息,请参阅我们关于 Evolving the Reflection API 的博客文章.
关于c# - PCL 程序集和读取资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21199733/
有人告诉我,如果我只有一个“东西”,比如家(不是多个家),我应该在 routes.rb 中使用资源 :home,而不是资源 :home。但是当我查看路由时,POST 函数似乎想要 home#creat
Activity 开始。这些代码框架顺利通过。 // Initialize array adapters. One for already paired devices and //
资源 search-hadoop.com search-hadoop.com索引所有邮件列表,非常适合历史搜索。当你遇到问题时首先在这里搜索,因为很可能有人已经遇到了你的问题。 邮件列表 在A
我是 WPF 的新手,正在努力使用位于单独程序集中的样式。这就是我正在做的:- 我有一个带有\Themes 文件夹的类库项目,其中包含一个“generic.xaml”,它合并了\Themes 内的子文
我正在编写一个使用虚拟树状文件结构的插件。基本上它就像一个包含文件的标准文件系统,区别在于这些文件实际上并不存在于文件系统中的特定位置,而只是 java 对象。 这些当前由使用 SettingProv
如果我在 XAML 中使用以下内容,我会收到错误消息: 错
我正在使用 laravel 资源来获取 api 的数据: return [ 'id' => $this->id, 'unread' =>
我有以下 pom.xml: 4.0.0 mycompany resource-fail 0.0.1-SNAPSHOT BazBat
许多GDI +类都实现IDisposable,但是我不确定何时应该调用Dispose。对于使用new或静态方法(例如Graphics.CreateGraphics)创建的实例来说,这很明显。但是,由属
我正在构建一组 RESTful 资源,其工作方式如下:(我将使用“people”作为示例): 获取/people/{key} - 返回一个人对象 (JSON) GET/people?first_nam
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一个使用 $resource 的简单 Controller : var Regions = $resource('mocks/regions.json'); $scope.regions =
在 Azure 门户中,如何查看不同资源之间的依赖关系。我特别想查看哪些资源正在使用我要删除的存储。 最佳答案 您可以使用应用程序洞察应用程序 map 来执行此操作: 您还可以打开存储帐户的日志记录:
我正在使用 ionic 生成资源(图标和启动画面)。我正在使用 ionic v2.1.0 和 cordova v6.4.0。 到目前为止我一直在使用(它在以前的版本中工作): cordova plat
是否可以使用 Assets 包含子文件夹中的文件? 示例:[base_url]/assets/css/pepper-grinder/jquery-ui-1.8.11.custom.min.css 最佳
我正在阅读一些尝试教授 Android 开发的书。在书中,作者概述了 res/下的一些目录。他提到 res/menu 包含基于 XML 的菜单规范。他还提到了保存“通用文件”的 res/raw。当我创
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我在服务器上使用 express-resource。在我的 AngularJS Controller 中: var User = $resource('/services/users/:use
因此,每当我运行我的应用程序时,它都会立即崩溃并给出以下错误: No package identifier when getting value for resource number 0x00000
对于我正在创建的(网络)应用程序,我需要使用基本身份验证在我的 UIWebView 中加载页面。 现在设置我使用的授权 header : NSString *result = [NSString st
我是一名优秀的程序员,十分优秀!