我在我的网站项目中添加了一个Script#项目,并创建了一个包含两个类的小样本库。
现在我想从网站代码中使用这些类。在这种情况下,我创建了一个简单的对象树并将其序列化为JSON(然后由客户端代码提取)。
我尝试添加对Script#项目的引用。它编译得很好,但在启动时会给我一个错误:
甚至可以在Script#和普通C#之间共享代码?
我在VS 2010和.NET 3.5(两个项目)中使用脚本#0.6。
答案 0 :(得分:6)
代码完全可以共享。我依靠这个来重用通过Web服务发送的数据类。
你能做的是:
示例:
public class MyDataPacket
{
public int UserId;
public string SomeData1;
public int SomeData2;
#if SCRIPTSHARP
public MyDataPacket(MyOtherClientSideClass arg)
{
// init
}
#endif
#if WEBSERVER
public MyDataPacket(MyOtherServerSideClass arg)
{
// init
}
#endif
}
编辑:脚本#现在包含默认符号SCRIPTSHARP
,其意图比!WEBSERVER
更清晰。
答案 1 :(得分:3)
在脚本#和c#之间共享代码的一种可能方法是添加源文件的链接。在VS中,您可以在将项目添加到项目时将源文件作为链接添加到项目中(文件未复制,而是添加对源文件的引用)。 在c#项目中,以正常方式添加相同的文件。结果是,每当您更改代码时,这些更改都将反映在两个项目中。编译文件时,c#项目中的文件将使用c#编译器进行编译,脚本#中的文件将使用脚本#compiler编译。
当然,您必须小心只使用c#和脚本#常用的功能。这限制了可能的用途,但也许数据结构可以这种方式共享。
答案 2 :(得分:0)
甚至可以在Script#和普通C#之间共享代码?
这实际上是不可能的。您的项目必须使用C#2.0,并且必须符合Script#的限制。相反,您可以设置automapper.
对我来说,我发现在Script#中设置第二个域模型更容易,我没有那么大的域模型开始。
请记住,脚本#只是编译为Javascript。