我想知道以下是否是访客模式的可接受用途.从Accept()或Visit()调用返回时我感到有点不舒服 - 这是否适合使用此模式,如果没有,为什么不呢?
注意:长代码示例的道歉,似乎有必要了解我正在做的事情,因为访问者似乎总是有点参与......
interface IAnimalElement<T>
{
T Accept(IAnimalVisitor<T> visitor);
}
interface IAnimalVisitor<T>
{
T Visit(Lion lion);
T Visit(Peacock peacock);
T VisitZoo(List<Animal> animals);
}
abstract class Animal
{
public int Age { get; protected set; }
}
class Lion : Animal, IAnimalElement<int>
{
public Lion(int age)
{
Age = age;
}
public int Accept(IAnimalVisitor<int> visitor)
{
return visitor.Visit(this);
}
}
class Peacock : Animal, IAnimalElement<int>
{
public Peacock(int age)
{
Age = age;
}
public int Accept(IAnimalVisitor<int> visitor)
{ …
Run Code Online (Sandbox Code Playgroud) 我会有一个相当普遍的问题.除了作为程序员在学校之外,您是否曾经必须真正计算(例如在纸上)算法的复杂性?如果......你能给我一个例子吗.
谢谢 :)
我在连接到MS Access DB 2007时遇到问题.代码:
private void btnSave_Click(object sender, EventArgs e)
{
OleDbConnection Conn = new OleDbConnection();
try
{
string conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ Directory.GetCurrentDirectory() +"\\dvd_manager.accdb;Persist Security Info=False;";
Conn.ConnectionString = conn;
Conn.Open();
int i = cbbLocatie.SelectedIndex + 65;
char c = (char)i;
string sql = "INSERT INTO DVD (titel, locatie)VALUES(@titel, @locatie)";
OleDbCommand Com = new OleDbCommand();
Com.CommandText = sql;
Com.Connection = Conn;
OleDbParameter Param = new OleDbParameter("@titel", txtTitle.Text);
Com.Parameters.Add(Param);
Param = new OleDbParameter("@locatie", c);
Com.Parameters.Add(Param);
Com.ExecuteNonQuery();
Conn.Close();
MessageBox.Show("Data is opgeslagen " …
Run Code Online (Sandbox Code Playgroud) 在C/C++中进行四元数计算的任何好的库?
旁注:任何好的教程/示例?我已经谷歌了,并且去了前几页,但也许你有一些来自compsci或数学课程的演示/实验室你可以/将分享?
谢谢
我熟悉矢量的数学/物理概念作为幅度和方向,但我也在编程的上下文中不断引用向量(例如C++似乎有一个stl :: vector库出现了经常在SO).
我从上下文中得到的直觉是,它们是一个相当原始的构造,最常用于表示可变长度数组的行(按照我认为的大小存储它的大小),但是如果有人可以的话,它会非常有用为我提供了更完整的解释,最好包括它们在实践中的使用方式和原因.
有没有人知道从XPath表达式以编程方式创建XML层次结构的现有方法?
例如,如果我有一个XML片段,例如:
<feed>
<entry>
<data></data>
<content></content>
</entry>
</feed>
Run Code Online (Sandbox Code Playgroud)
给定XPath表达式/ feed/entry/content/@ source我会:
<feed>
<entry>
<data></data>
<content @source=""></content>
</entry>
</feed>
Run Code Online (Sandbox Code Playgroud)
我意识到使用XSLT是可能的,但由于我正在尝试完成的动态特性,固定转换将无法工作.
我在C#工作,但如果有人使用其他语言的解决方案,请加入.
谢谢您的帮助!
可能重复:
C#/ .NET分析工具,用于查找竞争条件/死锁
我正在调试一个应用程序,我怀疑它正在陷入僵局并挂起.但是,这只会每隔几天发生一次,并且它永远不会发生在我的计算机上,因此我无法将调试器挂钩.是否有任何实用程序或方法可以用来查询正在运行的应用程序,并找出哪些方法/锁定/它是什么死锁?
更新:通常,应用程序在客户位置运行,我无法访问该计算机,并且我不太愿意让他们安装大量软件.
所以,我有一个使用StructureMap的.NET解决方案,我想让StructureMap读取一个外部程序集,该程序集实现该解决方案中项目的接口并为其定义注册表项.
我的解决方案的StructreMap配置:
ObjectFactory.Initialize(registry =>
{
registry.Scan(assembly =>
{
assembly.TheCallingAssembly();
//Telling StructureMap to sweep a folder called "extensions" directly
//underneath the application root folder for any assemblies found in that folder
assembly.AssembliesFromPath("extensions", addedAssembly => addedAssembly.GetName().Name.ToLower().Contains("extension"));
//Direct StructureMap to add any Registries that it finds in these assemblies, assuming that all the StructureMap directives are
//contained in registry classes
assembly.LookForRegistries();
});
});
Run Code Online (Sandbox Code Playgroud)
非常简单,我告诉它将调用程序集和程序集从目录添加到程序集集合中.我调试了程序集变量,它确实找到了所有程序集(包括扩展目录中的程序集).
在我创建的DLL项目中,我独立于原始解决方案,我有一个接口的实现(我从原始解决方案中引用了interfaces项目),并编写了一个非常简单的注册表:
public class ProductMockRegistry : Registry
{
public ProductMockRegistry()
{
ForRequestedType<IProductRepository>().AddInstances(repository =>
{
repository.OfConcreteType<ProductMockRepository>();
});
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,StructureMap没有在外部DLL中找到注册表.它发现DLL很好,但是当我告诉LookForRegistries时,它找不到它.
我有一个文件,我想使用File :: Slurp模块读取,然后搜索该文件的特定行.我知道Perl有正则表达式,但我正在搜索的字符串是用户生成的,所以不要担心逃避一切.我可以编写一个foreach循环来执行此操作但是想知道Perl中是否有一个函数可以为我执行此操作?我在网上看到的关于在Perl中查找文本的一切都使用正则表达式.