将我的Windows窗体应用程序定位到.NET 3.5 SP1 客户端框架真的很不错.但是,现在我正在使用HttpUtility.HtmlDecode和HttpUtility.UrlDecode函数,而MSDN文档并没有指出System.Net之类的任何替代品.
因此,不要反思源代码并将其复制到我的程序集中 - 我认为这不值得 - 在.NET 3.5 SP1客户端框架中有你知道的替代品,以替换它功能?他们将这些有用的功能限制为仅服务器代码似乎有点奇怪.
有没有人知道java.lang.System.out笨拙设计背后的动机?
尴尬:
首先,外面的成员暴露(封装任何人?).
其次,它是最终的,但可以通过setOut()更改(与final相矛盾).
所以我希望能够在C#中解析和评估"骰子表达式".骰子表达式定义如下:
<expr> := <expr> + <expr>
| <expr> - <expr>
| [<number>]d(<number>|%)
| <number>
<number> := positive integer
Run Code Online (Sandbox Code Playgroud)
所以例如d6+20-2d3是允许的,并且应该评估为
rand.Next(1, 7) + 20 - (rand.Next(1, 4) + rand.Next(1, 4))
Run Code Online (Sandbox Code Playgroud)
也d%应该相当于d100.
我知道我可以解决一些解决方案,但我也知道这似乎是一个非常典型的计算机科学类型的问题,所以必须有一些我应该研究的超优雅解决方案.
我希望我的解析结果具有以下功能:
1d6-2d3+20.任何实例d%也会变成d100标准化形式.1*6+20+2*3 = 32.我知道这正是Haskell的类型,可能还有其他功能类型的语言,但是如果可能的话,我想留在C#中.
我最初的想法倾向于递归,列表,也许还有一些LINQ,但是,如果我尝试没有知道事物的人的一些指示,我肯定它最终会成为一个不优雅的混乱.
另一种可能有效的策略是一些基于正则表达式的初始字符串替换,将骰子表达式转换为rand.Next调用,然后进行即时评估或编译......这实际上有用吗?我怎么能避免rand每次都创建一个新对象?
所以我正在阅读那些在另一个问题中链接到的Windows Vista UI指南,并且他们提到您应该能够在切换到120 DPI后继续存在.好吧,我安装了我的应用程序,启动了我方便的虚拟机,我们得到了什么... AAAAGH !!! 大规模的UI失败!
一切都是乱七八糟的:一些容器对于他们的文本来说不够大; 一些"彼此相邻"的控件现在都被挤压在一起/分开; 有些按钮不够高; 我的ListView专栏不够广...... eeek.
这听起来像是一种完全不同的方法.我之前的一个基本上是使用VS2008 Windows窗体设计器来创建一个基于像素的布局.我可以看到,如果我坚持使用Windows Forms,FlowLayoutPanels会有所帮助,尽管我发现它们在过去相当不灵活.它们也没有解决容器(例如表格本身)不够大的问题; 大概有办法做到这一点?也许那个AutoSize属性?
这也可能表明是时候跳槽到WPF了; 我的印象是它专门为这种东西而设计.
基本问题似乎归结为以下几点:
我的应用程序使用用户名和密码连接到FTP服务器.我可以创建加密例程来加密和解密密码,但任何有权访问源代码和加密密码的人都可以解密密码.
有一种简单的方法可以防止每个人知道应用程序使用的整个密码吗?(如果有多个人知道密码的一部分,我认为没关系.)
编辑:我知道FTP不安全.理想情况下,我想要一种适用于需要用户名和密码的任何情况下的技术(例如数据库连接).
我正在为Netflix API编写.NET包装器API.
此时,我可以选择将URL表示为字符串或URI对象.在我看来两者都有一个很好的例子.
因此,如果您使用的是API,您更喜欢哪种?
我喜欢将NuGet用于jQuery,jQuery UI,Modernizr,Knockout.js等等.但NuGet希望将相关文件放入/Scripts,这会变得太混乱.我更喜欢他们进入/Content/Scripts/libraries,或者至少/Scripts/libraries.
这可能吗?
我希望我的程序能够通过电子邮件向我发送错误报告.如何在不对用户名/密码/ SMTP服务器/等进行硬编码的情况下执行此操作.进入代码?(这样做会允许用户反编译程序并接管此电子邮件帐户.)
我被告知你可以通过telnet到端口25做一些事情,但我对细节非常模糊.Google上的大多数代码段都假设您有一个预先存在的帐户,但在这种情况下不起作用.
我使用的是.NET v3.5(特别是C#),但我认为这些想法在大多数语言中都足够相似.只要您意识到我正在为离线应用程序执行此操作,并且不向我提供PHP代码或其他内容,我们应该没问题.
您可以在IL中的.NET中的接口上定义静态构造函数.但是,如果这样做,则在接口上运行方法时不会运行静态构造函数:
.method public static void Main() {
.entrypoint
.locals init ( class IInterface cls1 )
// InterfaceClass static constructor is run
newobj instance void InterfaceClass::.ctor()
stloc.0
ldloc.0
// IInterface static constructor is not run!!!!!
callvirt instance int32 IInterface::Method()
call void [mscorlib]System.Console::WriteLine(int32)
ret
}
.class public interface IInterface {
.method private static specialname rtspecialname void .cctor() {
ldstr "Interface static cctor"
call void [mscorlib]System.Console::WriteLine(string)
ret
}
.method public abstract virtual instance int32 Method() {}
}
.class public InterfaceClass implements IInterface { …Run Code Online (Sandbox Code Playgroud) 所以我有一个名为WebParts.aspx的文件,看起来像这样 -
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebParts.aspx.cs" Inherits="e.WebParts" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<div>
<asp:TabContainer ID="TabContainer1" runat="server">
<asp:TabPanel ID="TabPanel1" runat="server">
<ContentTemplate>Page One</ContentTemplate>
</asp:TabPanel>
<asp:TabPanel ID="TabPanel2" runat="server">
<ContentTemplate>Page Two</ContentTemplate>
</asp:TabPanel>
<asp:TabPanel ID="TabPanel3" runat="server">
<ContentTemplate>Page Three</ContentTemplate>
</asp:TabPanel>
</asp:TabContainer>
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这样就可以在标签容器中创建3个选项卡面板.
但是,当我更改该页面以使用MasterPage.master看起来像这样 -
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebParts.aspx.cs" Inherits="eservice.WebParts" MasterPageFile="~/MasterPage.Master"%>
<asp:Content ID="Content2"
ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
<asp:LoginView …Run Code Online (Sandbox Code Playgroud)