我试图了解C#中的嵌套类.我知道嵌套类是在另一个类中定义的类,我没有得到的是为什么我需要这样做.
鉴于我Personable在我的Rails 4应用程序中有一个问题有一个full_name方法,我将如何使用RSpec进行测试?
关注/ personable.rb
module Personable
extend ActiveSupport::Concern
def full_name
"#{first_name} #{last_name}"
end
end
Run Code Online (Sandbox Code Playgroud) 我现在已经尝试了很长一段时间,但无法弄明白.我正在尝试通过*.csv文件将数据导出到Excel.它到目前为止工作得很好,但在Excel中打开文件时遇到了一些编码问题.
(左边的原始字符串,右边的EXCEL结果):
Messwert(µm / m) ==> Messwert(µm / m)
Dümme Mässöng ==> Dümme Mässöng
Run Code Online (Sandbox Code Playgroud)
Notepad ++告诉我该文件被编码为"ANSI as UTF8"(WTF?)
所以这里有不同的方法我试图得到一个有效的结果:明显的实现:
tWriter.Write(";Messwert(µm /m)");
Run Code Online (Sandbox Code Playgroud)
更复杂的一个(试过可能十几个或更多的编码组合:)
tWriter.Write(Encoding.Default.GetString(Encoding.Unicode.GetBytes(";Messwert(µm /m)")));
tWriter.Write(Encoding.ASCII.GetString(Encoding.Unicode.GetBytes(";Messwert(µm /m)")));
Run Code Online (Sandbox Code Playgroud)
等等
创建数据的方法的完整源代码:
MemoryStream tStream = new MemoryStream();
StreamWriter tWriter = new StreamWriter(tStream);
tWriter.Write("\uFEFF");
tWriter.WriteLine(string.Format("{0}", aMeasurement.Name));
tWriter.WriteLine(aMeasurement.Comment);
tWriter.WriteLine();
tWriter.WriteLine("Zeit in Minuten;Messwert(µm / m)");
TimeSpan tSpan;
foreach (IMeasuringPoint tPoint in aMeasurement)
{
tSpan = new TimeSpan(tPoint.Time - aMeasurement[0].Time);
tWriter.WriteLine(string.Format("{0};{1};", (int)tSpan.TotalMinutes, getMPString(tPoint)));
}
tWriter.Flush();
return tStream;
Run Code Online (Sandbox Code Playgroud)
生成的CSV文件:
Dümme Mössäng
Testmessung die erste
Zeit in Minuten;Messwert(µm / m) …Run Code Online (Sandbox Code Playgroud) 在.NET 3.5中是否有内置方法将ISO 8601周期转换为.NET TimeSpan/ticks /毫秒?
尝试解析CommonDocuments目录时出现了一些奇怪的错误.使用Windows资源管理器(属性 - >上下文菜单中的路径)将CommonDocuments目录重定向/移动到新位置后,它会一直解析到错误的目录.
最小的工作代码是:
namespace CommonDocumentsTest
{
class Program
{
private static readonly Guid CommonDocumentsGuid = new Guid("ED4824AF-DCE4-45A8-81E2-FC7965083634");
[Flags]
public enum KnownFolderFlag : uint
{
None = 0x0,
CREATE = 0x8000,
DONT_VERFIY = 0x4000,
DONT_UNEXPAND= 0x2000,
NO_ALIAS = 0x1000,
INIT = 0x800,
DEFAULT_PATH = 0x400,
NOT_PARENT_RELATIVE = 0x200,
SIMPLE_IDLIST = 0x100,
ALIAS_ONLY = 0x80000000
}
[DllImport("shell32.dll")]
static extern int SHGetKnownFolderPath([MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags, IntPtr hToken, out IntPtr pszPath);
static void Main(string[] args)
{
KnownFolderFlag[] flags …Run Code Online (Sandbox Code Playgroud) 我通过 Google 的测量 API发送事件- 而不是“普通”的 JS API。
我大约在80 小时前(周四晚些时候到周一早些时候)开始发送事件。
在正常的一天,我们发送大约 200-400 个事件。视图只应用了一个过滤器(过滤掉单个办公室 IP 地址)。
预期行为:事件在实时视图以及“行为”下的报告中都显示良好。
观察到的行为:事件仅显示在实时视图中,而不显示在“行为”下的报告中。
我有一个名为"DefaultMeasurement"的MarshalByRefObject,它包含一个IPoint对象列表.
public class DefaultMeasurement : MarshalByRefObject, IMeasurement
{
private List<IPoint> iPoints;
public this[int aIndex]
{
get { return iPoints[aIndex];}
}
}
[Serializable]
public class DefaultPoint : IPoint, ISerializable
{
public int Value {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
首次从服务器检索DefaultMeasurement对象时,所有点都被序列化,并且在所有后续调用DefaultMeasurement.Points期间,我得到了启动客户端时正确的列表.但与此同时,该列表中至少有一个对象的状态可能已更改,并且我没有获得当前状态,尽管在服务器中状态得到更新.如何强制更新该列表?
进一步澄清:
- 它会在我做的时候起作用DefaultPoint : MarshalByRefObject,但这不是一个选项,因为它会对性能产生负面影响
- "更新"我指的是对服务器上现有对象的更改,不会在列表本身上添加/删除
- 我可能会到80k DefaultPoint物体
ToolStripMenuItem mi = new ToolStripMenuItem();
var value = new KeysConverter().ConvertFromString("PageUp");
// value = Enum.Parse(typeof (Keys), "PageUp");
var cast = (Keys) value;
mi.ShortcutKeys = cast;
Run Code Online (Sandbox Code Playgroud)
我正在尝试将字符串"PageUp"转换为适当的System.Windows.Forms.Keys值.但是,两种解析方法(Enum.Parse()vs. KeysConverter.ConvertFromString())都设置value为LButton | Space,这导致InvalidEnumArgumentException了最后一行.
背景:
System.Windows.Forms.Keys 是一个标志枚举Enum.Parse正常.如何正确解析"PageUp" Keys.PageUp?
更新:
傻我.解析工作正常.
ToolStripMenuItem mi = new ToolStripMenuItem();
mi.ShortcutKeys = Keys.PageUp;
Run Code Online (Sandbox Code Playgroud)
但是这个抛出了上面提到的异常.
所以在意识到我咆哮了错误的树之后:
一个人怎么可以分配Keys.PageUp到ToolStripMenuItem.ShortcutKeys?
在编写C#时,我经常发现自己实现了不可变类型.我总是写了很多代码,我想知道是否有更快的方法来实现它.
我通常写的:
public struct MyType
{
private Int32 _value;
public Int32 Value { get { return _value;} }
public MyType(Int32 val)
{
_value = val;
}
}
MyType alpha = new MyType(42);
Run Code Online (Sandbox Code Playgroud)
当字段数量增加并且输入很多时,这变得相当复杂.有没有更有效的方法来做到这一点?
根据这个问题,我需要打电话request.setMaxListeners(0)来解决所描述的问题.
当我尝试做的时候:
var request = require('request');
request.setMaxListeners(0);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
request.setMaxListeners(0);
^ TypeError: Object function request(uri, options, callback) { if (typeof uri === 'undefined') throw new Error('undefined is not a valid uri or options object.') if ((typeof options === 'function') && !callback) callback = options if (options && typeof options === 'object') {
options.uri = uri } else if (typeof uri === 'string') {
options = {uri:uri} } else {
options = uri }
options = copy(options)
if …Run Code Online (Sandbox Code Playgroud) 好吧,所以我想问一下,实际上是否可以从c#到c ++创建一个解析器.
因此,用C#编写的代码能够像用C++编写的代码一样快地运行.
它真的可以吗?我不是在问它会有多难.