使用控制台应用程序时,Console.ReadLine()会存储在a 处输入的所有内容的历史记录.在控制台提示输入内容时,按向上/向下光标将滚动浏览此历史记录(按F7可查看整个历史记录).
使用C#,是否有办法禁用此行为或清除已输入的内容的历史记录?
澄清Console.Clear()一下,不清楚历史,只有屏幕缓冲区.我想清除命令历史记录.
编辑:尝试了几种建议的方法,以及我自己设计的一些方法,最好的方法是ho1建议的方法.它并不理想,因为它会带来另一个控制台窗口,但它确实清除了历史记录.
我正在努力让RestSharp与我拥有的宁静服务一起工作.一切似乎工作得很好,除非我传递的对象POST包含一个列表(在这个特殊情况下是一个列表string).
我的目标:
public class TestObj
{
public string Name{get;set;}
public List<string> Children{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
当它被发送到服务器时,Children属性将作为包含内容的字符串发送System.Collections.Generic.List`1[System.String].
这是我发送对象的方式:
var client = new RestClient();
var request = new RestRequest("http://localhost", Method.PUT);
var test = new TestObj {Name = "Fred", Children = new List<string> {"Arthur", "Betty"}};
request.AddObject(test);
client.Execute<TestObj>(request);
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者这是RestSharp中的错误?(如果它有所不同,我使用的是JSON,而不是XML.)
我们在应用程序中使用NTLM auth来确定用户是否可以执行某些操作.我们使用当前Windows登录的IPrincipal(在WinForms应用程序中),调用IsInRole来检查特定的组成员身份.
要检查用户是否是计算机上的本地管理员,我们使用:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
...
bool allowed = Thread.CurrentPrincipal.IsInRole(@"Builtin\Administrators")
Run Code Online (Sandbox Code Playgroud)
如果当前用户是Administrator用户,或者是该Builtin\Administrators组的成员的另一个用户,则此方法有效.
在我们对Windows 7的测试中,我们发现这不再按预期工作.该Administrator用户仍然能正常工作,但毕竟是成员的任何其他用户Builtin\Administrators组返回FALSE IsInRole调用.
什么可能导致这种差异?我有一种直觉感觉默认设置已经改变了(可能在gpedit中),但找不到任何看起来像罪魁祸首的东西.
我对python WSGI应用程序有一系列维护任务,这些任务对于crontab来说有点过于复杂(作业需要以从作业队列大小派生的频率运行,管理连接池到一组EC2实例等等) ).
我该如何实现一个长期运行的事件驱动的python程序?我以前从未需要这个功能,所以我甚至不确定谷歌是什么.
如果我设置CurrentCulture线程池线程,当线程完成执行并返回到线程池时会发生什么?它是否CurrentCulture重置为默认值(无论可能意味着什么),还是会保留我在其上设置的文化?
我希望框架将线程重置为默认状态以防止这种情况,但是找不到任何这种效果的文档.我找到的最接近的是来自ThreadPool的MSDN文档:
当线程池重用线程时,它不会清除线程本地存储中或使用ThreadStaticAttribute属性标记的字段中的数据.因此,通过一个方法放置在线程本地存储中的数据可以暴露给由同一线程池线程执行的任何其他方法.
这似乎表明线程在返回时没有重置.
我已经尝试了一些示例代码来尝试对此进行测试,并且看起来确实重置了文化,但我不相信我正在测试这种行为,因为我认为我只使用了ThreadPool的一小部分线程,并且所以不能确定我正在测试一个已经拥有它的文化集的线程.
我正在尝试使用MvcContrib Test Helper来测试MVC3中的控制器方法.
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
考试:
[TestMethod]
public void Index()
{
// Arrange
HomeController controller = new HomeController();
// Act
ViewResult result = controller.Index() as ViewResult;
// Assert
result.AssertViewRendered().ForView("Index");
}
Run Code Online (Sandbox Code Playgroud)
错误:
测试方法Tests.Web.Controllers.HomeControllerTests.Index抛出异常:MvcContrib.TestHelper.ActionResultAssertionException:预期结果为ViewResult类型.它实际上是ViewResult类型.
有任何想法吗?
我需要将对象列表序列化为平面文件.电话会是这样的:
class MyObject
{
public int x;
public int y;
public string a;
public string b;
}
Run Code Online (Sandbox Code Playgroud)
当我序列化这个对象时,应该在ascii编码的平面文件中写入一条记录.现在,字段x的长度应为10个字符(右对齐),字段y应为20个字符(右对齐),fiels a应为40(左对齐),字段b应为100个字符(左对齐).我怎样才能实现这样的目标.
序列化对象应如下所示:
25 8 akjsrj jug
Run Code Online (Sandbox Code Playgroud)
我想可能是我可以将自定义属性属性应用于字段,并可以在运行时决定如何序列化字段..
我已经看到可以将编译的方法一起添加.
Expression<Func<Customer, bool>> ln = c => c.lastname.Equals(_customer.lastName, StringComparison.InvariantCultureIgnoreCase);
Expression<Func<Customer, bool>> fn = c => c.firstname.Equals(_customer.firstName, StringComparison.InvariantCultureIgnoreCase);
Expression<Func<Customer, bool>> fdob = c => c.DOB.ToString("yyyyMMdd").Equals(_customer.DOB.ToString("yyyyMMdd"));
var filter = ln.Compile() + fn.Compile() + fdob.Compile();
Run Code Online (Sandbox Code Playgroud)
这样做有意义吗?
我打算使用过滤器代替lambda表达式来过滤客户的存储库:
IEnumerable<Customer> customersFound = _repo.Customers.Where(filter);
Run Code Online (Sandbox Code Playgroud)
根据业务逻辑,我可能会或可能不会将三个编译的方法一起添加,但是选择,并可能添加更多编译的方法.
任何人都可以解释是否将它们组合在一起会构建查询字符串吗?有人有更好的建议吗?
我可以链接"Where"语句并使用常规的lambda表达式,但我对你可能从编译方法中获得的内容感兴趣并添加它们!
我刚刚将Visual Studio升级到版本2013 Ultimate,我发现System.IO.FileSystemWatcher类无法观看由Visual Studio 2013编辑的文件.假设我有以下代码
class Program
{
static void Main(string[] args)
{
var watcher = new FileSystemWatcher(@"C:\test", "*.txt");
watcher.Changed += watcher_Changed;
watcher.EnableRaisingEvents = true;
Console.Read();
watcher.Changed -= watcher_Changed;
}
static void watcher_Changed(object sender, FileSystemEventArgs e)
{
Console.WriteLine("file is changed");
}
}
Run Code Online (Sandbox Code Playgroud)
如果我C:\test\a.txt用记事本编辑文件,程序将报告文件是更改,但如果我使用Visual Studio 2013编辑它,我的程序保持沉默.为什么?
这很奇怪.
我安装了Visual Studio 2013.如果我创建一个新项目,Visual Studio会立即抱怨它找不到任何引用:

但是,即使错误列表中有警告,项目也能正确编译和运行:

如果我查看任何这些引用的属性,它们的路径是空的.如果我加载一个现有的项目,Visual Studio可以找到它的引用并且不会抱怨,即使它的目标是与破坏的项目相同的.Net框架版本(我甚至将它们都放在同一个解决方案中相同的行为).
我该如何解决这个问题,以及可能导致这种情况的原因?任何建议都欢迎,因为它让我感到困惑.