一个新手问题:我有一个带有一些虚函数的类的层次结构,我正在尝试实现一个工厂方法,但我不确定什么是最好的方法:
我将非常感谢工厂方法和最小客户端的示例,它有效并且不会泄漏内存.
我的背景是C#和Java,所以我在C++ atm中的内存管理方面有点迷失.
我有一个我不用多个构造函数控制的类型,相当于这个:
public class MyClass
{
private readonly string _property;
private MyClass()
{
Console.WriteLine("We don't want this one to be called.");
}
public MyClass(string property)
{
_property = property;
}
public MyClass(object obj) : this(obj.ToString()) {}
public string Property
{
get { return _property; }
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试反序列化它时,将调用私有无参数构造函数,并且永远不会设置该属性.考试:
[Test]
public void MyClassSerializes()
{
MyClass expected = new MyClass("test");
string output = JsonConvert.SerializeObject(expected);
MyClass actual = JsonConvert.DeserializeObject<MyClass>(output);
Assert.AreEqual(expected.Property, actual.Property);
}
Run Code Online (Sandbox Code Playgroud)
给出以下输出:
We don't want this one to be called.
Expected: "test"
But …Run Code Online (Sandbox Code Playgroud) 我已经将Web服务配置为使用Json,如本博客中所述:http://www.west-wind.com/weblog/posts/164419.aspx和其他各种博客,但我无法创建客户端来使用此服务服务.我尝试了各种各样的东西,但总是有无意义的例外.实现(我应该添加的WCF)客户端的正确方法是什么?
我试图以一种可以在Linux中由gcc编译的方式配置VS c ++项目.似乎我需要将文件编码为UTF-8而不签名(这不是默认值).是否可以在项目或解决方案级别设置某些内容,以便在有人打开解决方案并保存其更改后,文件仍为UTF-8?
请注意,它是一个开放项目,所以我不能要求每个人都改变他们的Visual Studio设置.
我必须将很多文件从一个文件夹复制到另一个文件夹.目前我这样做:
string[] files = Directory.GetFiles(rootFolder, "*.xml");
foreach (string file in files)
{
string otherFile = Path.Combine(otherFolder, Path.GetFileName(file));
File.Copy(file, otherFile);
}
Run Code Online (Sandbox Code Playgroud)
这是最有效的方式吗?似乎需要很长时间.
编辑:我真的问是否有更快的方法来进行批量复制,而不是复制单个文件,但我想答案是否定的.
将UTF-16文件转换为UTF-8的最佳方法是什么?我需要在cmd脚本中使用它.
创建JSON Web服务的最佳方法是什么?我们有另一个使用Java的团队,他们坚持使用JSON完成所有通信.我更愿意使用WCF而不是任何第三方框架.
我发现这个博客:http://www.west-wind.com/weblog/posts/164419.aspx,它表明微软的实现存在M $特定废话的缺陷.
从文档提升来看,似乎为正态分布和伽玛分布提供了分位数函数(逆cdf函数),但我不清楚如何实际使用它们.有人可以贴一个例子吗?
实现动态编程算法以解决重叠子问题的问题最优雅的方法是什么?在命令性编程一个通常会产生由该问题的大小索引(至少在一个维度上)的阵列,然后算法将从最简单的问题开始并朝着更复杂一次工作,使用已经计算出的结果.
我能想到的最简单的例子是计算Nth Fibonacci数:
int Fibonacci(int N)
{
var F = new int[N+1];
F[0]=1;
F[1]=1;
for(int i=2; i<=N; i++)
{
F[i]=F[i-1]+F[i-2];
}
return F[N];
}
Run Code Online (Sandbox Code Playgroud)
我知道你可以在F#中实现相同的功能,但我正在寻找一个很好的功能解决方案(显然也是O(N)).
我试图在F#中创建一个额外的构造函数,它执行一些额外的工作(即读取基本的csv文件),如下所示:
type Sheet () =
let rows = new ResizeArray<ResizeArray<String>>()
let mutable width = 0
new(fileName) as this =
Sheet()
then
let lines = System.IO.File.ReadLines fileName
for line in lines do
let cells = line.Split ','
rows.Add(new ResizeArray<String> (cells)) //line 16
if cells.Length > width then width <- cells.Length
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Error 1 The namespace or module 'rows' is not defined C:\Users\ga1009\Documents\PhD\cpp\pmi\fsharp\pmi\Csv.fs 16
Error 2 The value or constructor 'width' is not defined C:\Users\ga1009\Documents\PhD\cpp\pmi\fsharp\pmi\Csv.fs 17
Error 3 The value or constructor …Run Code Online (Sandbox Code Playgroud)