2015-11-11 101 views
0

我想通过http发送一个包含函数的类。 这可以完成吗?通过Http发送逻辑

它应该像这样的工作:

1)客户联系Web.API。
2)Web.API返回类的功能
3)客户端执行函数。

类看起来有点像这样:

public class UploadTicket 
{ 
    public string url { get; set; } 
    public List<Tuple<string, string>> Headers { get; set; } 

    public Func<string> SpecialFunction { get; set; } 
} 

我需要这个功能通过每一个包被发送时附加的ID改变的uploadURL - 但前提是一定的dataProvider,而在其他情况下, uploadurls必须以其他方式修改。我需要这样做,所以我可以保持客户端代码尽可能通用。

+0

为什么不能在客户端上存在函数?你试图解决什么样的总体问题? – DGibbs

+0

简单的答案 - 你不能这样做。您不能通过HTTP发送C#方法,而且还需要在JS中执行C#方法。您需要在客户端或服务器端实现此逻辑并使用它。 –

+0

@DGibbs该函数需要在服务器端生成,因为根据客户端需要联系谁的逻辑会有所不同 - 基本上我需要在客户端创建一个永远不需要再次修改的方法 - 如果可能的话,都必须在服务器端进行处理。 – OneBigQuestion

回答

1

听起来有点愚蠢,但是你可以,条件是你发送源到客户端,而不是一些预编译的版本(否则它真的会是一个巨大的安全漏洞)。只需使用C# runtime compiler即可。但它意味着客户端是C#,这就是为什么它听起来很愚蠢。

这实际上是每个人每天都在使用的常见模式。想象一下访问web服务器的web浏览器,并获取一个包含javascript的页面。同样的事情发生。浏览器编译JS并执行它,即使源是远程生成的。

+0

我看着它,不幸的是我在xamarin中创建这个项目,并且项目无法跨平台共享C#运行时编译器 - 但是感谢您的建议。 – OneBigQuestion

+0

我很确定我之前用MonoDevelop完成了这个任务,它基本上是xamarin的旧版本。您只需在运行时使用Mono.CSharp.dll。 – mprivat