在 C# => 在控制台应用程序中执行类库

Posted

技术标签:

【中文标题】在 C# => 在控制台应用程序中执行类库【英文标题】:In C# => Executing Class Library in Console Application 【发布时间】:2019-01-21 17:25:18 【问题描述】:

我希望创建一个菜单驱动程序,该程序将根据某些方面(比如操作员或任何其他事物)进行分类。

我创建了一个控制台应用程序项目并将“sample”作为命名空间。 在示例中,我在 Main() 中创建了一个菜单

public static void Main()
    
        Console.Clear();
        Console.WriteLine("\nMenu Driven Program");
        Console.WriteLine("\n<--------List of Available Options-------->");
//Creating a list to Select from
        Console.WriteLine("\n  Select Any of the Following Function :");
        Console.WriteLine("\n_________________________________________");
        Console.WriteLine("\n1. Arithmatic Operators\n2. Logical Operators");
        Console.WriteLine("\n3.Misc1\n4. Misc2");
//Accepting a normal string
        string b = Console.ReadLine();
        int d;
// Following converts string into an integer
        Int32.TryParse(b, out d);

//Following code is used to create menu-driven program
        switch (d)
        
            case 1:
//Here I wish to call one class library 
                break;

            case 2:
//Here I wish to call another class library
                break;
//And so on.    

            default:
                Console.WriteLine("\n\nWhat you wish to do?\na. Continue the Program\n\nb. Exit the Program");
                char c = Convert.ToChar(Console.ReadLine());
                if(c=='a'||c=='A')
                
                    Main();
                
                else
                
                    Exit();
                                  
                break;
        
    

现在,我创建了一个类库,我将在其中存储三个类(让我们考虑一下)递增、除法和乘法。

但是,我无法调用该类库。 当我在 Switch "Case" 中直接输入类库的名称时,它给了我 CS0118 错误,指出 "Sample" 只是一个命名空间,但用作变量。

在我的类库中,我创建了三个不同的类和一个 Main() 这将显示可用操作的列表。 例如,如果算术运算符,那么类库中的 Main 将包括加法、减法、乘法等。

【问题讨论】:

你的库中的类是什么样的,你是如何尝试调用它的?如果您包含导致错误的行会有所帮助 namespace Sample class MyClass public static void Main() ... - 不要忘记声明classMain 应该是类中。 可能相关:***.com/questions/15007727/… 和 blogs.msdn.microsoft.com/ericlippert/2010/03/09/… 请包括一个被注释掉的类调用的样子...... OP,你不能“调用类库”。您唯一可以调用的是方法。该方法可能属于库中包含的类。如果您所写的只是名称空间,那将无济于事。 【参考方案1】:

CS0118 错误指出“Sample”只是一个命名空间,但用作变量

当您尝试创建命名空间的实例或以其他方式使用命名空间时,会发生错误 CS0118,就像它是类的实例一样。请参阅this documentation post 了解更多信息。

根据您的描述,我的假设是您需要根据用户选择的内容调用 3 个类中的每个类中的 main。考虑以下代码...

switch(d)

    case 1:
        Sample.Class1.Main();
        break;
    case 2:
        Sample.Class2.Main();
        break;
    case 3:
        Sample.Class3.Main();
        break;
    default:
        // default processing here

这是假设您的命名空间名为 Sample,并且方法在您的库中的类中定义为静态。

【讨论】:

谢谢。它解决了有关问题。正如你的名字一样,你确实是“很棒”。【参考方案2】:

您需要添加对类库项目的引用。我假设您在相同的解决方案中创建了它们。确保两者的工作相同。网络版说4.6。 要添加引用,请展开项目资源管理器,查找引用,右键单击并选择添加,然后找到类库并选中复选框。 如果您安装了生产力工具 Resharper,它可以更快地修复这些问题。

【讨论】:

实际上,我确实添加了引用,我只是想从类库中调用 Main()。我使用了“Fabulous”提供的解决方案,我将其标记为“Answer”。感谢您的回复。

以上是关于在 C# => 在控制台应用程序中执行类库的主要内容,如果未能解决你的问题,请参考以下文章

C#控制台程序的参数解析类库 CommandLine简单使用说明

C#中,运行程序时提示:无法直接启动还有类库输出类型的项目?

c# 调用c++类库控制usb继电器

C#使用反射加载多个程序集

C# 类库dll的创建和使用

在调试C#的程序的时候弹出一个框说 无法直接启动带有“类库输出类型”的项目,这个怎么解决哦!