Pau*_*ane 174
请注意,您希望直接访问的P1中的类型必须具有足够的访问级别:通常这意味着它们必须公开.
Nis*_*sim 66
只需在P2中添加对P1的引用即可
Pro*_*yon 13
Paul Ruane是对的,我刚刚尝试自己构建项目.我刚刚制作了一个完整的SLN来测试它是否有效.
我在VC#VS2008中做了这个
<<(只是帮助其他人阅读此内容以及()评论)
步骤1:
制作名为DoubleProject的解决方案
第2步:
在名为DoubleProjectTwo的解决方案中创建项目(为此选择解决方案文件,右键单击 - >添加 - >新项目)
我现在在同一个解决方案中有两个项目
第三步:
正如Paul Ruane所说.转到解决方案资源管理器中的引用(如果在编译器的视图选项卡中关闭它).DoubleProjectTwo是需要DoubleProject的函数/方法的,所以在DoubleProjectTwo鼠标引用那里 - > Add - > Projects - > 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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
第五步:
制作一些东西给我看结果证明:
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
主要的
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这应该够了吧
希望这可以帮助
编辑:::哎呀忘了方法调用实际更改字符串,不要做同样的:)
第一步是通过执行以下操作使P2参考P1
接下来,您需要确保P1中的类可以访问P2.最简单的方法就是制作它们public.
public class MyType { ... }
Run Code Online (Sandbox Code Playgroud)
现在,您应该能够通过其完全限定名称在P2中使用它们.假设P1的名称空间是Project1,那么以下内容将起作用
Project1.MyType obj = new Project1.MyType();
Run Code Online (Sandbox Code Playgroud)
但首选的方法是添加一个使用,Project1这样你就可以使用没有限定条件的类型
using Project1;
...
public void Example() {
MyType obj = new MyType();
}
Run Code Online (Sandbox Code Playgroud)
小智 7
新开发人员经常会问这个简单的问题,这是Visual Studio IDE的一个常见问题.很少有人回答这个具体问题,经常批评这个问题,或者对那些无法解决常见问题的解决方案进行"猜测".第一个常见问题是IDE会引导您创建新项目,而不是将新文件(.java,.py,.cpp,.c)添加到现有解决方案(默认情况下会创建新解决方案),除非您更改项目名称并添加到当前的解决方案.Python,Java,c#,C++和C项目文件夹会出现此问题.
选择"新建>项目>项目名称并将解决方案目录更改为"使用相同解决方案"的新开发人员仍然在同一解决方案空间中创建新的"项目",但不在与当前用户界面文件或命令相同的目录空间中在构建和运行项目或解决方案时仍然会导致"未找到包"错误的行文件.这就是为什么导入包,类,方法和函数的上述编码建议仅起作用(因此不能回答问题) )当"库"文件或"单独行为"文件不仅在同一个解决方案目录路径中,而且在同一个"用户界面"或"命令shell"应用程序目录空间中.当你添加另一个时,这不会发生项目使用IDE的新>项目>项目类型命令.这里的问题是新项目存储在与现有客户端或用户界面代码文件不同的目录中.在同一项目空间中创建新的"文件"日 一个新项目初学者需要做以下事情,微软不会为你做,甚至误导你远离默认的直观明显.
现在,导入库或使用命名空间的代码建议将按照上面的注释中的描述工作,您不必更改路径语句或更改Microsoft不会让您轻松更改的解决方案路径和解决方案名称(即您可以更改文件名或项目名称,但IDE不会自动更改项目路径或解决方案路径名称).
以下是一个Python示例,但对于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
Run Code Online (Sandbox Code Playgroud)
包含要导入的类,方法或函数的库文件或"façade"文件.
class class1(object):
"""description of class"""
class ClassA(object):
print ("test2")
def methodA():
print ("test3")
def functionA ():
print ("test4")
return (0)
pass
Run Code Online (Sandbox Code Playgroud)
现在,您如何实际解决IDE引导您进入的混乱局面?要从同一目录空间中的另一个文件导入代码,请添加对它的引用.
好了,既然你已经解决了这个问题,你如何在同一个解决方案空间中将两个独立的项目真正联系在一起?
Microsoft确实需要解决这些问题,因此您可以直观地创建大多数人想要在同一目录中创建新文件的内容,并通过选择它们并从IDE中删除它们来删除解决方案.对于经验丰富的开发人员来说,初学者对目录路径语句非常沮丧,但对于默认情况下的新开发人员来说这是不公平的.
希望这真的可以帮助你新手,并阻止经验丰富的开发人员给你错误的答案,不适合你.他们假设您已经理解了路径语句,并且只想输入正确的代码...这也是隧道试图纠正您的代码但无法帮助您解决问题的原因.这可能是stackoverflow上不断描述的最常见问题,错误的答案对新程序员不起作用.
如果您在一个解决方案文件夹中有两个项目。只需将项目的引用添加到另一个。使用命名空间,您可以获得类。在为所需的类创建对象时。调用你想要的方法。
第一个项目:
class FirstClass()
{
public string Name()
{
return "James";
}
}
Run Code Online (Sandbox Code Playgroud)
这里添加对第二个项目的引用
第二项目:
class SeccondClass
{
FirstProject.FirstClass obj=new FirstProject.FirstClass();
obj.Name();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
201112 次 |
| 最近记录: |