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

时间:2018-08-14 19:21:10

标签: c# .net windows dll console-application

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

我创建了一个控制台应用程序项目,并给了“示例”作为名称空间。 在示例中,我在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 in class库将包括加法,减法,乘法等。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  

CS0118错误,指出“样本”只是一个名称空间,但像变量一样使用

当您尝试创建名称空间的实例,或以其他方式使用名称空间(好像它是类的实例)时,发生错误CS0118。有关更多信息,请参见this documentation post

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

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,并且方法在库的类中定义为静态。