Answers:
只需从P2添加对P1的引用
请注意,您希望直接访问的P1中的类型必须具有足够的访问级别:通常,这意味着必须将它们公开。
Paul Ruane是正确的,我刚刚尝试自己构建了项目。我只是做了整个SLN来测试它是否有效。
我在VC#VS2008中做到了
<<(只是通过()注释帮助其他同时阅读此书的人)
第1步:
制作名为DoubleProject的解决方案
第2步:
在名为DoubleProjectTwo的解决方案中创建项目(为此选择解决方案文件,右键单击->添加->新项目)
我现在在同一解决方案中有两个项目
第三步:
正如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();
}
}
}
第五步:
让我看一下结果证明:
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();
}
}
}
这应该够了吧
希望这可以帮助
编辑:::哎呀忘记了实际更改字符串的方法调用,不要这样做:)
新开发人员常常会问这个简单的问题,这是Visual Studio IDE的常见问题。很少有人回答特定的问题,并且经常批评该问题或对无法回答常见问题的解决方案给出“猜测”。第一个常见问题是IDE会导致您创建新项目,而不是将新文件(.java,.py,.cpp,.c)添加到现有解决方案中(默认情况下会创建新解决方案),除非您更改项目名称并添加到当前解决方案中。对于Python,java,c#,C ++和C项目文件夹,会出现此问题。
当您使用IDE的new> project> project type命令添加另一个项目时,不会发生这种情况。这里的问题是新项目存储在与现有客户端或用户界面代码文件不同的目录中。为了在相同的项目空间而不是新项目中创建一个新的“文件”,初学者需要执行Microsoft不会为您做的以下事情,甚至默认情况下会误导您使其脱离直观的外观。
现在,用于导入库或使用名称空间的代码建议将按上面的注释中所述工作,并且您不必更改路径语句或更改Microsoft不会轻易更改的解决方案路径和解决方案名称(即,您可以更改文件名或项目名称,但IDE不会自动更改项目路径或解决方案路径名称)。
以下是一个Python示例,但使用include,名称空间或使用适合每种语言的代码命令在SAME DIRECTORY SPACE中的其他类/项目中查找代码,对C#,java或C / C ++的工作原理相似。
从同一目录中的其他代码文件导入的应用程序文件“ hello world”。
请注意,在此stackoverflow注释编辑器中,python空白分隔符无法正确分隔:
print ("test")
from CIXMPythonFacade import ClassA
c1=ClassA
c1.methodA()
from CIXMPythonFacade import functionA
functionA()
class ClassName(object):
def __init__(object, parameter):
object.parameter = value
包含要导入的类,方法或函数的库文件或“façade”文件。
class class1(object):
"""description of class"""
class ClassA(object):
print ("test2")
def methodA():
print ("test3")
def functionA ():
print ("test4")
return (0)
pass
现在,您如何真正解决IDE导致的麻烦?要从同一目录空间中的另一个文件导入代码,请添加对该文件的引用。
好了,既然您已经解决了这个问题,那么如何在同一个解决方案空间中将两个单独的项目真正链接在一起?
Microsoft确实确实需要解决这些问题,因此您可以直观地创建大多数人想要在同一目录中创建为新文件的内容,并通过选择解决方案并将其从IDE中删除来删除解决方案。初学者对目录路径语句感到沮丧,这对于经验丰富的开发人员而言如此灵活,但对于默认设置的新开发人员而言则如此。
希望这确实对您有所帮助,并阻止经验丰富的开发人员为您提供错误的答案,而这些答案对您不起作用。他们假设您已经了解路径语句,只想键入正确的代码...这也是为什么试图更正代码但无法帮助您解决问题的原因。这可能是在stackoverflow上不断描述的最常见问题,错误答案对新程序员不起作用。
第一步是通过执行以下操作使P2引用为P1
接下来,您需要确保P2可以访问P1中的类。最简单的方法就是制作它们public
。
public class MyType { ... }
现在,您应该能够通过它们的完全限定名称在P2中使用它们。假设P1的名称空间是Project1,则可以执行以下操作
Project1.MyType obj = new Project1.MyType();
不过,首选方式是添加一个for,Project1
这样您就可以不加限定地使用这些类型
using Project1;
...
public void Example() {
MyType obj = new MyType();
}
如果您在一个解决方案文件夹中有两个项目,只需将项目的引用添加到另一个解决方案文件夹中即可使用命名空间获取类。在为该需要的类创建对象时。调用所需的方法。
FirstProject:
class FirstClass()
{
public string Name()
{
return "James";
}
}
在这里添加对第二个项目的引用
SecondProject:
class SeccondClass
{
FirstProject.FirstClass obj=new FirstProject.FirstClass();
obj.Name();
}