我问过这个关于Microsoft .NET库及其源代码复杂性的问题.从我正在阅读的内容来看,编写通用库和编写应用程序可能是两回事.在编写库时,您必须考虑可以成为每个人的客户端(假设我发布库以供普通公众使用).
学习编写图书馆时,有哪些实践或理论或技术有用?你在哪里学习编写像.NET库中的代码?这看起来像一个我不太了解的"黑色艺术".
例如:我想有Add方法ICollection的自定义集合类来实现方法链接和流利的语言,所以我能做到这一点的:
randomObject.Add("I").Add("Can").Add("Chain").Add("This").
Run Code Online (Sandbox Code Playgroud)
我可以想到一些选项,但它们很混乱,并涉及将ICollection包装在另一个界面中等等.
你Microsoft.Security.Application.AntiXss.HtmlEncode什么时候打电话?您是在用户提交信息时执行此操作还是在显示信息时执行此操作?
如姓名,姓氏,城市,州,邮编等基本内容怎么样?
标准:性能,性能,性能.
我需要一种方法将uint,int等转换为它的enum等价物.使用C#,我能用最快的方式做什么?
我很高兴使用iTunes Store,但我对它的开发很感兴趣(PHP和MySQL,Something Custom?).
我经常修改一段代码,我想"锁定"或使代码区域"只读".这样,我可以修改代码的唯一方法是先解锁它.有没有办法做到这一点?
例如,我有一个名为SampleControl的自定义控件.为了简化这个问题的事情,假装我只是从头开始制作一个Panel Control克隆.
<CC:SampleControl ID="Sample1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Hi"></asp:Label>
<asp:Button ID="Button1" runat="server" Text="Button1"></asp:Label>
</CC:SampleControl>
Run Code Online (Sandbox Code Playgroud)
要输出:
<div id="Sample1">
<span id=Label1>Hi</span>
etc.....
</div>
Run Code Online (Sandbox Code Playgroud)
守则在哪里:
public class SampleControl: WebControl
{
.....Render Stuff Goes Here.....
}
Run Code Online (Sandbox Code Playgroud)
中间的ASP控件没有被ASP.NET注册.当我在Panel控件上做了一个Reflector时,我无法找到他们如何获得渲染的中间控件.它看起来不像是使用模板化控件.
当我这样做时,我收到此错误:
分析程序错误说明:解析为此请求提供服务所需的资源时发生错误.请查看以下特定的解析错误详细信息并相应地修改源文件.
有任何想法吗?
C#2.0使我可以访问可空类型.当我希望数据库中的DateTime变量为null时,这似乎非常方便.在使用可空类型时我有什么可担心的吗?或者我可以过度使用我可以为空的每种类型?
这可能很容易,但我很难过.我想创建一个通用类,它将在我的程序中多次使用.我希望它非常轻巧,超级快.
对于C#中一个非常简单的例子:
public class SystemTest
{
public TestMethod(string testString)
{
if(testString == "blue")
{
RunA();
}
else if(testString == "red")
{
RunB();
}
else if(testString == "orange")
{
RunA();
}
else if(testString == "pink")
{
RunB();
}
}
protected void RunA() {}
protected void RunB() {}
}
Run Code Online (Sandbox Code Playgroud)
我希望RunA()和RunB()由实例化此类的对象定义和控制.完全由对象实例化SystemTest类来决定RunA()和RunB()将要做什么.你怎么做到这一点?
我不希望实例对象总是继承这个SystemTest类,我希望它能够快速运行.我唯一想到的是复杂的,处理器密集型的东西.我知道有一种更简单的方法可以做到这一点.
编辑:通常,哪个运行得更快,代理或接口方法在下面的答案?
我会继承一个特定的对象是动态的,并通过app.config文件之类的某种类型的额外设置进行设置.
这是一个例子:
//PROGRAM A
public class MySuperClass : OldIneritanceObjectVersion
{
........Stuff Goes Here
}
//PROGRAM B
public class MySuperClass : OldIneritanceObjectVersion
{
........Stuff Goes Here
}
//PROGRAM B .....a Few Years Later.....
public class MySuperClass : NewIneritanceObjectVersion
{
........Stuff Goes Here
}
Run Code Online (Sandbox Code Playgroud)
你可以猜到,我希望我的旧东西继续使用OldIneritanceObjectVersion,而我想要创建新东西以及更新旧东西以使用更新的NewIneritanceObjectVersion.有没有办法动态地做到这一点?
在IIS7 for Vista中,您可以选择您的计算机,它为您提供了几个可用于配置系统的选项.这个文件存放在哪里?好像有一个很大的master.config文件,它存储了我的所有设置,比如网页继承的"连接字符串".
据说它是一个名为machine.config的文件,但我在IIS管理器中没有更改任何内容,因为我的机器会在那里更改.
我记得有一次前(1-2岁前),如果您需要在Ubuntu任何配置,你需要去使用命令行.今天怎么样?我可以将它用作我的完整桌面吗?我可以把它带到全国各地的演示文稿而不是让自己难堪,因为投影机不能正常工作吗?当我必须连接到各种静态网络时,它是否运作良好?
基本上,它是否足够用户友好,我不需要为了做事而与之斗争.
注意:在我上次经历之后,我绝对肯定拒绝使用命令行.
c# ×5
.net ×1
api ×1
asp.net ×1
enums ×1
fluent ×1
html-encode ×1
icollection ×1
iis-7 ×1
inheritance ×1
itunes ×1
linux ×1
nullable ×1
oop ×1
readonly ×1
security ×1
ubuntu ×1
web-control ×1