我在一个解决方案中有两个项目。第一个是ClassLibrary作为输出,第二个是WPF项目。我要从第二个项目访问的第一个项目中有一种方法,但是我不能。我告诉我该功能不存在。
我已经尝试使用“添加引用”菜单将引用添加到第二个项目。在第二个项目引用树中,第一个项目存在。 我包括了名称空间:使用firstproject;
第一个项目代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ClassLibrary2
{
public class Class1
{
public void displayTest()
{
Console.WriteLine("Hello World !");
}
}
}
第二个项目代码:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using ClassLibrary2;
namespace CpowerPos
{
/// <summary>
/// Logique d'interaction pour MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ButtonConnection(object sender, RoutedEventArgs e)
{
displayTest();
}
}
}
答案 0 :(得分:0)
您需要先创建该类的实例,然后才能调用它。
您可以这样做:
var c1 = new Class1();
c1.displayTest();
或者您也可以将其设置为单线:
new Class1().displayTest();
答案 1 :(得分:0)
您完成了将类库项目集成到WPF应用程序所需的所有过程。
您只是错过了在Class1
中创建MainWindow
的实例
要在MainWindow中实例化Class1,可以使用new运算符
Class1 c1 = new Class1(); //This will create instance of class1
c1.displayTest() //This will call display function
不要错过包括Class1的名称空间。 (即您已经在项目中完成过操作,即using ClassLibrary2;
)
答案 2 :(得分:0)
项目1
public static class Class1
{
public static void displayTest()
{
Console.WriteLine("Hello World !");
}
}
项目2
private void ButtonConnection(object sender, RoutedEventArgs e)
{
Class1.displayTest();
}
答案 3 :(得分:0)
您需要将第一个项目dll的引用添加到第二个项目。右键单击->添加引用->选择第一个项目的dll。然后包括您要访问的第一个项目的类型名称空间。而且,您发布的代码不应首先编译,因为没有displayTest()
方法是该类型的成员,它也是一个实例方法。因此,您将必须先创建Class1
的实例
private void ButtonConnection(object sender, RoutedEventArgs e)
{
Class1 c = new Class1();
c.displayTest();
}
答案 4 :(得分:0)
您确实已经从CpowerPos内部启用了对“ ClassLibrary2”的访问。 问题在于“ Class1”和“ DisplayText”都不是静态的,因此就代码而言,它们还不存在。
您可以将“ DisplayText”设为静态,从而允许您调用“ Class1.DisplayText()”,也可以创建一个实例:
Class1 libraryClass = new Class1();
libraryClass.DisplayText();
答案 5 :(得分:0)
方法是类的一部分,因此您需要创建Class1类的实例才能调用displayTest方法。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ButtonConnection(object sender, RoutedEventArgs e)
{
var myObj = new Class1();
myObj.displayTest();
}
}
或者您可以使方法静态并调用而无需创建实例。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ButtonConnection(object sender, RoutedEventArgs e)
{
Class1.displayTest();
}
}
另外,c#允许您访问类型的静态成员和嵌套类型,而不必使用类型名来限制访问。
using static ClassLibrary2.Class1;
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ButtonConnection(object sender, RoutedEventArgs e)
{
displayTest();
}
}