Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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
WinRT WinJS+;C#_C#_Visual Studio_Windows Runtime_Winjs - Fatal编程技术网

WinRT WinJS+;C#

WinRT WinJS+;C#,c#,visual-studio,windows-runtime,winjs,C#,Visual Studio,Windows Runtime,Winjs,我是WinRT领域的新手。我们公司已经开始开发windows 8应用商店应用程序。我最初是在XAML/C中开发的,直到我意识到我可以在WINJS中使用javascript和html;) 我已经编写了很多C#代码来执行调用,特别是使用HTTPClient进行REST调用的方法 1.我是否能够重用这些方法并从我的JS调用它们? 2.是否需要将它们重新打包到类库或运行时组件中 3.如何在javascript中访问这些类 任何朝着正确方向的推动都会非常有帮助 非常感谢。如果您将C类型更改为WinRT类型

我是WinRT领域的新手。我们公司已经开始开发windows 8应用商店应用程序。我最初是在XAML/C中开发的,直到我意识到我可以在WINJS中使用javascript和html;)

我已经编写了很多C#代码来执行调用,特别是使用HTTPClient进行REST调用的方法

1.我是否能够重用这些方法并从我的JS调用它们? 2.是否需要将它们重新打包到类库或运行时组件中 3.如何在javascript中访问这些类

任何朝着正确方向的推动都会非常有帮助


非常感谢。

如果您将C类型更改为WinRT类型,您应该可以从JS调用它们。这是MSDN,让您开始使用

是的,您需要重新打包它们。从文件新建项目(而不是类库类型)创建Windows运行时组件项目。编译时,您将看到需要修复的内容,因为对类型有一些限制

类需要密封、不能继承(有限情况下除外)和其他限制。此项目类型创建JavaScript应用程序可以使用的.winmd(元数据)

重要提示如下:

如果您的组件仅与C#或Visual Basic一起使用,则没有理由将其设置为Windows运行时组件。如果将其改为普通的.NET Framework类库,则不必将其公共API表面限制为Windows运行时类型


谢谢你的回复。我对WinJS研究得越多,我就越怀疑。看来你在数据存储方面有很多漏洞?这是否准确?我已经定义了一堆JSON对象,可以与我的HTTP客户端一起使用。我没有看到任何直接的方式将它们绑定到html?通过WinJS或任何绑定框架提供了丰富的绑定选项-请参阅我的博客文章:如果你在看不同的场景,请问我,我肯定能想到一些东西。谢谢,我的对象放在C#中。我会再胡闹一点。如果你的应用程序通过rest api连接到web服务,可能你可以考虑在winrt中放置一个服务客户端包装器,并从js代码的视图模型中使用它。你有这样做的例子吗?到目前为止,我还没有为我的应用程序实现C#和js之间的代码重用。我已经用winjs或c#完整地编写了它们。因此,我没有示例code.TRANSLATE c#to javascript:JSIL、scriptsharp、SharpKit、bridge.net或cshtml5。我不知道这些是否能很好地与WinRT或WinJS配合使用,但这正是我要尝试做的。总之,这些解决方案旨在允许您继续使用C#进行开发,基本上使用javascript作为部署的“汇编语言”。(与从一种语言到另一种语言的一次性翻译相反,这是一种帮助移植到不同平台的方法。)但要注意,不建议在一个应用程序中混合使用C#和JS。由于加载.net组件会将.net运行时引入wwahost.exe进程,因此会显著增加应用程序的内存占用。@philk建议在哪里避免?该选项正好适用于这些类型的情况。我不建议重写代码库来避免这种情况。MSFT不建议这样做,除此之外,OP描述的场景似乎并不太复杂,仅用简单的JS就可以实现。可以在JS中使用C#是的,但这会影响应用程序的内存占用,并使应用程序更有可能因此而首先被关闭。