C# 如何将不同名称空间中的旧代码导入到当前项目中?
我想在c#中的新项目中使用旧代码 这是旧代码。它保存在我电脑上的任意文件夹中C# 如何将不同名称空间中的旧代码导入到当前项目中?,c#,namespaces,C#,Namespaces,我想在c#中的新项目中使用旧代码 这是旧代码。它保存在我电脑上的任意文件夹中 namespace OldCode{ class HellowWorld { public static void SayHello() { Console.writeline("Hello World") } } } 我想在一个名为“新代码”的新项目中使用它 using OldCode (?) na
namespace OldCode{
class HellowWorld
{
public static void SayHello()
{
Console.writeline("Hello World")
}
}
}
我想在一个名为“新代码”的新项目中使用它
using OldCode (?)
namespace NewCode
{
class SayHelloNew
{
HelloWorld.SayHello();
}
}
我的问题是,如何链接到我的旧项目?我用旧代码做对了吗?或者我需要设置其他依赖项文件吗?这几乎是正确的。需要从
命名空间
声明中删除冒号(:
),并且要从外部访问HelloWorld
类,它必须是公共的
OldCode\HelloWorld.cs
namespace OldCode
{
public class HelloWorld
{
public static void SayHello()
{
Console.writeline("Hello World")
}
}
}
NewCode\SayHelloNew.cs
using OldCode;
namespace NewCode
{
class SayHelloNew
{
HelloWorld.SayHello();
}
}
您还需要确保编译器在编译时可以访问OldCode
,或者,如果使用Visual Studio,请在NewCode
项目中添加对OldCode
项目的引用
是的,让我给你描述一下,
首先,您应该通过添加如下
public
修饰符,使public类在其他源中访问它:
using System;
namespace Stackoverflow.OldCode
{
public class HelloWorld // <----------- make it public
{
public static void SayHello()
{
Console.WriteLine("Hello World!!!");
}
}
}
NewCode
项目和OldCode
应该在一个解决方案中,如果不是现在,右键单击解决方案名称并选择:Add>New project…
或Add>Existing project…
然后,您应该添加NewCode
项目作为对OldCode
项目的引用:
步骤1:
步骤2:
现在,您可以轻松访问旧的项目方法,如:
using Stackoverflow.OldCode; // <---- add the reference
namespace Stackoverflow.NewCode
{
class SayHelloNew
{
public static void SomeRandomName()
{
HelloWorld.SayHello(); // <----- call it
}
}
}
使用Stackoverflow.OldCode;//谢谢will,修复了冒号问题。如何确保编译器可以访问旧代码?如何在NewCode
命名空间中添加对OldCode
的引用?我正在使用visual studio。我已经更新了我的答案,添加了一个关于如何执行此操作的链接。祝您的编码之旅好运!:)另外,从技术上讲,SayHelloNew
的代码是无效的。对HelloWorld.SayHello()
的调用需要在一个方法中,或者返回值(在本例中,由于函数中没有返回语句,所以为null)存储在一个变量中。谢谢,我想不出什么语法。我怎样才能将你的答案标记为正确?我不确定你是否可以,因为你是新会员,没有足够的声誉,但是你的感谢对我来说已经足够了。佩曼-我现在正在更详细地学习OOP核心原则,我有一个问题。如果我想包含的代码是旧的,它不一定有相同的名称空间前缀。在您看来,更改另一个项目的名称空间不是违反了OOP的开-关原则,还是违反了DRY原则将其复制到新项目中以更改此项目的名称空间?我可以理解将旧代码封装在新名称空间下的新代码中,但在某种程度上改变它似乎是错误的。事实上,你是对的。您不必重命名现有项目的命名空间
。。。我建议如果您想创建一个新的命名约定,请使用前缀。您可以将任何具有任何命名空间的现有项目添加到您的解决方案中,并将其添加为对旧项目的引用,如上文所述。如果您对答案感到满意,可以通过单击将其标记为已接受✔️=>✅ 在我的答案旁边,祝你玩得开心:)@WillWalsh
using Stackoverflow.OldCode; // <---- add the reference
namespace Stackoverflow.NewCode
{
class SayHelloNew
{
public static void SomeRandomName()
{
HelloWorld.SayHello(); // <----- call it
}
}
}