Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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,Hi将在c#中编写一个dll,不带命名空间 我将编写一个类,然后将其转换为dll,即c#默认库类型为 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace temp { public class c1 { public static string f1(string

Hi将在c#中编写一个dll,不带命名空间

我将编写一个类,然后将其转换为dll,即c#默认库类型为

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace temp
{
    public class c1
    {
        public static string f1(string deger) {
            return deger.ToUpper() + " 333 ";
        }
    }
}
现在,我将编写以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public class c1
{
    public static string f1(string deger) {
        return deger.ToUpper() + " 333 ";
    }
}

如果两个U代码在运行时相同,则该类将位于.NET未命名全局命名空间中(不在程序集根命名空间中)。通过将此代码转换为dll,可以从任何地方以“global::c1”或“c1”的形式访问它。我想您的意思是编译为库。名称空间(或缺少)在这方面没有特殊效果

如果要在不引用dll的情况下引用此类,则需要动态加载dll

例如:

Assembly a = Assembly.LoadFrom("mylibrary.dll");
你的下一个问题是反思和使用这个类。通常,您会有一个定义一些接口的库

InterfaceLibrary.dll包含接口IC1

PluginLibrary.dll包含实现IC1的类C1

Program.exe

程序和插件库都引用接口库。该程序可以动态加载PluginLibrary并查找实现
IC1
的类


下面是一个更深入的C#插件架构示例:

我建议您阅读…@Sayse,但您可能会对这里90%的问题这么说!@weston可能重复-我经常这样做,在这种情况下,对于堆栈溢出格式,答案太宽,因此linkI更新了我的代码并在namspace中的类名左侧添加了公共语句(我在询问时忘记了公共语句),这两个U代码是相同的,但第一个代码有namspace{…},区别在于:这个类将位于.NET未命名全局命名空间(不在程序集根命名空间中)。真的吗?好的。我没有使用命名空间别名,并且我将此代码转换为dll,当我没有引用此dll时,我可以从其他项目访问这个类。所以我想我只能从我的dll中访问这个类,而ı将在我的dll中使用它,不是吗?对不起,我的种姓是(…当不引用这个dll时,我可以从其他项目访问这个类吗):如果这个类添加了.net的库或其他地方。我认为这个类只添加了我的dll。没有其他在机器上运行的应用程序不能访问这个类,不是吗?没有,没有其他应用程序可以访问这个类。全局名称空间不是全局的。谢谢,最后一个问题,所以如果我在项目中使用此dll,或者在其他可以访问此类的地方使用此dll(使用dll是访问此类的唯一方法),如果我不使用此dll,我决不能访问此类,不是吗?如果按照我在回答中解释的方式动态加载程序集,则可以使用该类。这意味着,如果我要访问该类,则必须使用该dll