Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将不同名称空间中的旧代码导入到当前项目中?_C#_Namespaces - Fatal编程技术网

C# 如何将不同名称空间中的旧代码导入到当前项目中?

C# 如何将不同名称空间中的旧代码导入到当前项目中?,c#,namespaces,C#,Namespaces,我想在c#中的新项目中使用旧代码 这是旧代码。它保存在我电脑上的任意文件夹中 namespace OldCode{ class HellowWorld { public static void SayHello() { Console.writeline("Hello World") } } } 我想在一个名为“新代码”的新项目中使用它 using OldCode (?) na

我想在c#中的新项目中使用旧代码

这是旧代码。它保存在我电脑上的任意文件夹中

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 
        }
    }
}