我正在开发一个工具,我需要将字符串值转换为正确的对象类型.例如,将字符串转换"2008-11-20T16:33:21Z"为DateTime值.数值喜欢"42"和"42.42"必须转换成一个Int32值和Double分别值.
检测字符串是整数还是数字的最佳和最有效的方法是什么?是Int32.TryParse或Double.TryParse要走的路?
作为闲置好奇心的练习,请考虑以下简单的日志记录类:
internal static class Logging
{
private static object threadlock;
static Logging()
{
threadlock = new object();
}
internal static void WriteLog(string message)
{
try
{
lock (threadlock)
{
File.AppendAllText(@"C:\logfile.log", message);
}
}
catch
{
...handle logging errors...
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否lock需要File.AppendAllText(...)通过自己的实现来保持本身的线程安全?
搜索有关这方面的信息会产生许多相互矛盾的信息,有些人说是,有些人说不.MSDN什么也没说.
在创建flexbox布局时没有设法堆叠div.它们要么在容器div中相互推送,要么我必须"position:absolute"在覆盖层上使用它从容器上下文中获取div.
z-indices似乎根本不起作用.
我正在使用chrome最新版本,并期待这种行为:http://dev.w3.org/csswg/css-flexbox/#painting
这是一个带有基本flexbox布局的plunker:http://plnkr.co/edit/o2BAwvg3XV4YjwAwwmYR?p =preview 来说明.
您必须.overlay在css 中的类定义中注释/取消注释定位.
如果我这样做Assembly.ReflectionOnlyLoadFrom(),是否可以卸载组件?
或者,只有当它位于单独的AppDomain中时才可以卸载Assembly.LoadFrom()吗?
我有一个工具需要加载一个组件进行检查.
我正在尝试对用户输入的文件名进行扩展SaveFileDialog和FileOpenDialog强制执行.我已尝试使用问题389070中提出的示例,但它无法按预期工作:
var dialog = new SaveFileDialog())
dialog.AddExtension = true;
dialog.DefaultExt = "foo";
dialog.Filter = "Foo Document (*.foo)|*.foo";
if (dialog.ShowDialog() == DialogResult.OK)
{
...
}
Run Code Online (Sandbox Code Playgroud)
如果用户test在文件test.xml恰好存在的文件夹中键入文本,则对话框将建议名称test.xml(而我真的只想*.foo在列表中看到).更糟糕的是:如果用户选择test.xml,那么我确实会得到test.xml输出文件名.
如何确保SaveFileDialog真正只允许用户选择*.foo文件?或者至少,当用户点击时,它会替换/添加扩展名Save?
建议的解决方案(实现FileOk事件处理程序)只执行部分工作,因为Save如果文件名具有错误的扩展名,我真的想要禁用该按钮.
若要保留对话框并更新FileOk处理程序中文本框中显示的文件名,以反映具有正确扩展名的新文件名,请参阅以下相关问题.
我的应用程序正在创建一个目录,以便我可以在其中存储日志文件.我正在为目录添加用户安全性,但我不知道如何使其传播.例如,我将用户添加everyone到目录中,并使用read和write访问,但是当我的应用程序在此目录中创建日志文件时,日志文件未继承everyone安全性(读取,写入).
我错过了什么?
DirectorySecurity dirSec = Directory.GetAccessControl(_dbPath);
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.Write, AccessControlType.Allow));
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.ReadAndExecute, AccessControlType.Allow));
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.CreateFiles, AccessControlType.Allow));
Directory.SetAccessControl(_dbPath, dirSec);
Run Code Online (Sandbox Code Playgroud) 我已经开始将一些常用的代码块导出到自定义代码段.有没有办法让这些显示在IntelliSense中,而不必使用上下文菜单或代码段管理器中的代码段浏览器?
起初,我认为这与ReSharper有关,但是当我禁用ReSharper IntelliSense时它们仍然没有出现.
能够只使用代码段快捷方式而不是使用浏览器会很高兴.
在typeof通过TypeBuilder创建的类型上使用运算符时,运算符将返回null.
我很好奇为什么会这样,以及如何防止它.
我开始认为这是即时窗口中的VS错误,但我不太确定.首先责怪别人很容易.
好的...重现问题的代码:
static void Main()
{
AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(
new AssemblyName("MyAssembly"),
AssemblyBuilderAccess.RunAndSave);
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyModule");
TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public, typeof(ArrayList));
ArrayList o = (ArrayList)Activator.CreateInstance(typeBuilder.CreateType());
Console.WriteLine(o.GetType().Name);
}
Run Code Online (Sandbox Code Playgroud)
如果在变量之后放置断点o并typeof(MyType)在VS立即Windows中键入,则会出现问题.
我想在我的Visual Studio 2010解决方案中同时针对.NET 3.5和.NET 4.0.
我知道我可以<TargetFrameworkVersion />在我的项目文件中设置,但是这需要我在构建特定.NET框架版本的解决方案之前编辑每个项目文件.Scott Dorman提供了一个宏,可以在他的博客Visual Studio 2010和Target Framework Version上发挥作用.
我正在寻找一个全局解决方案,我不必在每个项目中更改设置.是否可以在解决方案级别更改中央设置以实现相同的目标?
我有一个实现IDisposable接口的类来处理私有变量_MailMessage同一个类有一个使用私有IDisposable变量的异步方法,即async public Task<bool> Send我的问题是:在异步方法完成后,普通的IDisposable实现是否会处理私有变量?这是我正在谈论的课程的一个例子:
public class Email : IEmail
{
private readonly IEmailData _EmailData;
private MailMessage _MailMessage = new MailMessage();
public Email(IEmailData emailData)
{
if (emailData == null)
{
throw new ArgumentNullException("emailData");
}
if (String.IsNullOrEmpty(emailData.To))
{
throw new ArgumentNullException("emailData.To");
}
if (String.IsNullOrEmpty(emailData.From))
{
throw new ArgumentNullException("emailData.From");
}
if (String.IsNullOrEmpty(emailData.FromName))
{
throw new ArgumentNullException("emailData.FromName");
}
if (String.IsNullOrEmpty(emailData.Subject))
{
throw new ArgumentNullException("emailData.Subject");
}
if (String.IsNullOrEmpty(emailData.Body))
{
throw new ArgumentNullException("emailData.Body");
}
_EmailData = emailData;
}
async public Task<bool> Send() …Run Code Online (Sandbox Code Playgroud) c# ×7
.net ×3
.net-2.0 ×1
async-await ×1
clr ×1
clr4.0 ×1
css ×1
file-io ×1
flexbox ×1
idisposable ×1
reflection ×1
resharper ×1
security ×1
string ×1
value-type ×1
winforms ×1