我有一个相当深的对象层次结构,我试图坚持使用Entity Framework 4,POCO,PI(Persistence Ignorance)和Code First.突然之间,当我突然意识到不使用new()运算符时,事情开始变得很好.最初编写时,对象经常使用new()来创建子对象.
相反,我正在使用我对存储库模式的看法来根据需要创建所有子对象.例如,给定:
class Adam
{
List<Child> children;
void AddChildGivenInput(string input) { children.Add(new Child(...)); }
}
class Child
{
List<GrandChild> grandchildren;
void AddGrandChildGivenInput(string input) { grandchildren.Add(new GrandChild(...)); }
}
class GrandChild
{
}
Run Code Online (Sandbox Code Playgroud)
("GivenInput"表示此处未显示的某些处理)
我定义了一个AdamRepository
像:
class AdamRepository
{
Adam Add()
{
return objectContext.Create<Adam>();
}
Child AddChildGivenInput(Adam adam, string input)
{
return adam.children.Add(new Child(...));
}
GrandChild AddGrandchildGivenInput(Child child, string input)
{
return child.grandchildren.Add(new GrandChild(...));
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这很好用.但是,我不再"无知"我的持久性机制,因为我放弃了new()运算符.
此外,我有一个贫血领域模型的风险,因为这么多的逻辑最终存储在存储库而不是域对象中.
经过多次讨论,一个问题:
或者更确切地说......
在以下代码中:
public class MovieRepository : IMovieRepository
{
private readonly IHtmlDownloader _downloader;
public MovieRepository(IHtmlDownloader downloader)
{
_downloader = downloader;
}
public Movie FindMovieById(string id)
{
var idUri = ...build URI...;
var html = _downloader.DownloadHtml(idUri);
return ...parse ID HTML...;
}
public Movie FindMovieByTitle(string title)
{
var titleUri = ...build URI...;
var html = _downloader.DownloadHtml(titleUri);
return ...parse title HTML...;
}
}
Run Code Online (Sandbox Code Playgroud)
我要求审查我的代码,有人提出了这种方法.我的问题是为什么IHtmlDownloader变量只读?
背景:
我一直在研究用C++编写的平台游戏几个月.该游戏目前完全用C++编写,尽管我对使用Lua用于敌人AI以及可能的其他逻辑的可能性很感兴趣.但是,该项目的设计没有考虑到Lua,我已经为大部分AI编写了可用的C++代码.我希望Lua可以提高游戏的可扩展性,但不知道将现有的C++代码转换为Lua是否有意义.
问题:
如果有的话,是否适合采用功能齐全的C++代码并将其重构为像Lua这样的脚本语言?
问题是故意有点模糊,所以请随意给出与给定背景无关的答案.
编辑:找到答案!非常感谢大家,很多答案都有效,我选择隐藏的字段答案,因为它最简单:D
我正在创建一个评论脚本,我遇到了一个问题.我不得不在同一页面上使用$ _POST和$ _GET,我认为这没有道理.
我是非常新的PHP,我正在训练自己.
我有一个名为viewVerses.php的页面 - 这里有一个经文列表.当有人关注回复链接时,
echo '<br /><a href="reply.php?verseid='.$verseid.'">Reply</a>';
Run Code Online (Sandbox Code Playgroud)
我正在将这首诗歌(评论圣经经文)传递给reply.php,以便可以用该诗句进行查询.(这样,用户仍然可以看到他/她正在评论的经文).
现在,reply.php中有一个用于发布回复的表单.表格转到postReply.php
这是在postReply.php中
$title = $_POST['title'];
$body = $_POST['body'];
$verseid = $_GET[verseid];
Run Code Online (Sandbox Code Playgroud)
我可以从网址和POST中获取同一页面中表格中的值的诗歌吗?
如果没有,有没有办法可以做得更好?记住,我是php新手,可能不会实现超级难的解决方案.我必须把它放在我的网站上.
我希望这很清楚
你能解释为什么不允许这样做,
#include <stdio.h>
class B {
private:
int a;
public:
int a;
};
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
虽然这是?
#include <stdio.h>
class A {
public:
int a;
};
class B : public A{
private:
int a;
};
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我们有一个公钥和一个名为私有变量a
在class B
.
现在编辑!
我遇到了这个有趣的网站,想到了一种可视化聚类算法的方法,称为"Clustergram":
alt text http://www.schonlau.net/images/clustergramexample.gif
我不确定这是多么有用,但为了玩它我想用R重现它,但我不知道如何去做.
您如何为每个项目创建一条线,以便在不同数量的集群中保持一致?
以下是可用答案的示例代码/数据:
hc <- hclust(dist(USArrests), "ave")
plot(hc)
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
public class Main {
public void method(Object o)
{
System.out.println("Object Version");
}
public void method(String s)
{
System.out.println("String Version");
}
public static void main(String args[])
{
Main question = new Main();
question.method(null);//1
}
}
Run Code Online (Sandbox Code Playgroud)
为什么结果是"字符串版本"?如果第一个方法接受一个StringBuffer
对象,为什么会出现编译器错误?
另一种情况:如果第一个方法接受一个StringBuffer
对象,我写question.method("word");
的结果将是"String Version".为什么?为什么没有编译器错误?
例如,拿我的Actor类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
namespace FreeIMDB
{
class Actor
{
public string Name { get; set; }
public Image Portrait { get; set; }
public DateTime DateOfBirth { get; set; }
public List<string> ActingRoles { get; set; }
public List<string> WritingRoles { get; set; }
public List<string> ProducingRoles { get; set; }
public List<string> DirectingRoles { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
此类仅用于将信息填充到其中,并允许其他开发人员获取其值.
正式称这些类型的课程是什么?什么是正确的命名法?
我是Java的新手,并且在整数数组中检查null元素时遇到问题.我正在使用Eclipse进行编辑,并且检查null元素的行显示错误:
抱怨的行:
if(a[i] != null) {
Run Code Online (Sandbox Code Playgroud)
来自Eclipse的错误信息:
The operator != is undefined for the argument type(s) int, null
Run Code Online (Sandbox Code Playgroud)
在PHP中,这没有任何问题,但在Java中,似乎我必须将数组类型从整数更改为Object以使该行不被抱怨(如下所示)
Object[] a = new Object[3];
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如果我仍然想要声明为整数数组并且仍然想要检查null,它的语法是什么?
码:
public void test() {
int[] a = new int[3];
for(int i=0; i<a.length; i++) {
if(a[i] != null) { //this line complains...
System.out.println('null!');
}
}
}
Run Code Online (Sandbox Code Playgroud) 我很惊讶地发现"ref"和"out"参数没有用特殊属性标记,尽管存在ParameterInfo.IsOut,ParameterInfo.IsIn(据我所知,它们都是假的),ParameterAttributes.在和ParameterAttributes.Out中.相反,"ref"参数实际上由一种特殊类型的"Type"对象表示,"out"参数只是具有附加属性的ref参数(我还不知道哪种属性).
无论如何,要创建一个by-ref参数,你可以调用Type.MakeByRefType(),但我的问题是,如果你已经有一个by-ref类型,你如何回到原始类型?
提示:它不是UnderlyingSystemType:
Type t = typeof(int);
Console.WriteLine(t.MakeByRefType().UnderlyingSystemType==t); // FALSE
Run Code Online (Sandbox Code Playgroud)