使用来自 c# .dll 的 if() 作为 Winforms 中的 if()

Use if() from c# .dll as if() in Winforms

我一直在尝试弄清楚如何将我的 c# dll 与 c# windows forms app 一起使用,我想要实现的是在我的 dll 中创建一个 if() 条件,然后使用它在 winforms 中。

基本上我想在 dll 中创建一个函数来检查文件是否存在,然后在 winforms 中将其用作按钮单击示例中的条件:

if(mydll.Classname.Function == true)

我的dll代码

    public class Classname
{
    static void Function()
    {
        if (File.Exists("\blabla\something\app.exe"))
        {

            

        }

    }
}

然后我将 dll 链接到 win 表单,在 win 表单中我尝试了这个

        private void Launch_Click(object sender, EventArgs e)
    {
        if (mydll.Classname.Function == true)
        {


        }

}

当我尝试这个时,它有下划线,我无法构建它。

有什么想法吗? 谢谢

在 .NET 中,您可以通过创建 Class 库项目来创建 DLL。然后您可以在您的应用程序中引用该项目。如果此 Class 库项目在同一个解决方案中,您可以向指向此库的应用程序 (WinForms) 添加项目引用。如果它在另一个解决方案中,请添加对 DLL 的程序集引用(通常位于 bin/Release 文件夹中)。

另请参阅:How to Add References to Your Visual Studio Project


现在,开始设计你的库函数。此函数必须 return 一个表示文件测试结果的布尔值,可以在应用程序的 if 语句中使用。另外,它必须是 public.

public static class FileFunctions
{
    public static bool AppExists()
    {
        return File.Exists(@"\blabla\something\app.exe");
    }
}

请注意,我还使 class 静态,因此无法创建此 class 的对象,因为它在这里没有意义 (var makesNoSense = new FileFunctions();) .

现在,在您的应用程序中,您可以使用此功能:

private void Launch_Click(object sender, EventArgs e)
{
    if (FileFunctions.AppExists())
    {

    }
}

不能在代码中直接引用DLL;但是,如果 class 在另一个命名空间中,则必须引用此命名空间。或者直接在调用站点:

if (ClassLibraryNamespace.FileFunctions.AppExists())

... 或者在代码文件的顶部添加一个 using,其中可能已经有一个 using System;:

using ClassLibraryNamespace;

注意我没有写if (FileFunctions.AppExeExists() == true)。 if 语句需要一个产生布尔值的表达式,即 truefalse。这就是returns的功能。它可以是一个比较,但这不是必需的。