在同一个解决方案中,我有两个项目:P1和P2。如何在P2中使用P1类?
答案 0 :(得分:164)
请注意,您希望直接访问的P1类型必须具有足够的访问级别:通常这意味着它们必须公开。
答案 1 :(得分:64)
只需在P2中添加对P1的引用
答案 2 :(得分:13)
Paul Ruane是对的,我刚刚尝试自己构建项目。 我刚刚制作了一个完整的SLN来测试它是否有效。
我在VC#VS2008
中做了这个<< (只是帮助其他人阅读此内容以及()评论)
步骤1:
制作名为DoubleProject的解决方案
步骤2:
在名为DoubleProjectTwo的解决方案中制作项目(为此选择解决方案文件,右键单击 - >添加 - >新项目)
我现在在同一个解决方案中有两个项目
步骤3:
正如Paul Ruane所说。转到解决方案资源管理器中的引用(如果在编译器的视图选项卡中关闭它)。 DoubleProjectTwo是需要DoubleProject的函数/方法的,所以在DoubleProjectTwo右鼠标参考那里 - >添加 - >项目 - > DoubleProject。
步骤4:
包含指令 名称空间:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DoubleProject; <------------------------------------------
namespace DoubleProjectTwo
{
class ClassB
{
public string textB = "I am in Class B Project Two";
ClassA classA = new ClassA();
public void read()
{
textB = classA.read();
}
}
}
步骤5:
让某些东西给我证明 结果:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DoubleProject
{
public class ClassA //<---------- PUBLIC class
{
private const string textA = "I am in Class A Project One";
public string read()
{
return textA;
}
}
}
主要
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DoubleProjectTwo; //<----- to use ClassB in the main
namespace DoubleProject
{
class Program
{
static void Main(string[] args)
{
ClassB foo = new ClassB();
Console.WriteLine(foo.textB);
Console.ReadLine();
}
}
}
那应该做的伎俩
希望这有帮助
编辑:::哎呀忘了实际更改字符串的方法调用,不要这样做:)
答案 3 :(得分:6)
第一步是通过执行以下操作使P2参考P1
接下来,您需要确保P2可以访问P1中的类。最简单的方法是让它们public
。
public class MyType { ... }
现在,您应该可以通过其完全限定名称在P2中使用它们。假设P1的名称空间是Project1,那么以下内容将起作用
Project1.MyType obj = new Project1.MyType();
首选的方法是为Project1
添加一个使用,这样您就可以使用没有限定条件的类型
using Project1;
...
public void Example() {
MyType obj = new MyType();
}
答案 4 :(得分:4)
在项目P1中,将该类设为公共(如果尚未公开)。然后向P2添加项目引用(而不是文件引用,偶尔会遇到的错误)。在P2中的正确位置添加using语句并开始使用P1中的类。
(要提到这一点:公开课程的替代方法是让P2成为P1的朋友。但是,这不太可能是你所追求的答案,因为它会产生一些后果。所以坚持以上建议。)
答案 5 :(得分:2)
如果在一个解决方案文件夹中有两个项目。只需将项目的引用添加到另一个。使用命名空间,您可以获取类。在为需要的类创建对象时。调用您想要的方法。
FirstProject:
class FirstClass()
{
public string Name()
{
return "James";
}
}
这里添加对第二个项目的引用
SecondProject:
class SeccondClass
{
FirstProject.FirstClass obj=new FirstProject.FirstClass();
obj.Name();
}
答案 6 :(得分:2)
假设项目2中的类名为MyClass。
显然,首先在项目1中引用项目2,然后
using namespaceOfProject2;
// for the class calling bit:
namespaceOfProject2.MyClass project2Class = new namespaceOfProject2.MyClass();
因此,无论何时您想引用该类,都要键入project2Class。另外,请确保课程也是公开的。
答案 7 :(得分:1)
我对不同的目标框架有疑问。
我所做的一切都正确,但是无法使用P2中的引用。 在为P1和P2设置了相同的目标框架之后,它就像一个魅力。
希望它将对某人有所帮助
答案 8 :(得分:0)
提供另一个更简单的解决方案:-
“添加为链接”
就这样。
答案 9 :(得分:0)
您需要右键单击您的项目并选择 // Generated using webpack-cli http://github.com/webpack-cli
import path from 'path'
export default {
target: 'node',
mode: 'production',
entry: './src/test.ts',
output: {
path: 'D:/asant/Desktop/myproject/bundle',
},
plugins: [
// Add your plugins here
// Learn more obout plugins from https://webpack.js.org/configuration/plugins/
],
module: {
rules: [
{
test: /\.(ts|tsx)$/,
loader: 'ts-loader',
exclude: ['/node_modules/'],
},
{
test: /\.(eot|svg|ttf|woff|woff2|png|jpg|gif)$/,
type: 'asset',
},
// Add your rules for custom modules here
// Learn more about loaders from https://webpack.js.org/loaders/
],
},
resolve: {
extensions: ['.tsx', '.ts', '.js'],
},
}
并勾选您要引用的项目。
此操作的结果应在项目树的引用部分下显示引用的项目。
一个常见用例涉及向您的解决方案添加测试框架,例如 NUnit 项目。这个 NUnit 项目然后需要引用您的主项目。为此,步骤略有不同:
您需要右键单击您的 NUnit 项目并选择 add -> Reference... -> Projects
并勾选您要引用的项目。
此操作的结果应在 NUnit 项目树的“项目”部分下显示引用的项目。