【发布时间】:2011-11-20 17:03:08
【问题描述】:
上周我和朋友讨论了使用 DLL(.net DLL) 中的类。我有一个 .net DLL,我需要在我的 Exe 中使用它。
正常情况
- 我在我的解决方案中添加 DLL 并在我的 Exe 中引用该 DLL
- 创建类的对象(在我的 DLL 中)
- 从刚刚创建的对象开始调用类中的方法/function。
但最终决定,我们应该使用反射而不是我们正在做的方式。原因是松耦合。可以更改 DLL 中的功能并对其进行编译。在这种情况下,您不需要编译客户端代码。
我有一个关于这个背景的问题。
假设,我有一个非常简单的应用程序(比如控制台应用程序),并且我有两个类都被编写来完成不同的工作。
class Program
{
static void Main()
{
//How do you create a object of the class A.
}
}
class A
{
string A = "I am from A";
public B b;
public A
{
b = new B();
}
}
class B
{
string B = "I am from B";
public B
{
}
public void Print()
{
Console.WriteLine(B);
}
}
当三个类都是同一个exe时如何创建A类的对象,当A类和B类在不同的DLL中时如何创建相同的对象。
问题第二部分的一个答案是使用接口和使用反射。
反射是真的需要,还是一种编程标准。
创建类对象的最佳实践是什么。
【问题讨论】:
-
接口是实现松耦合的正确方法。我不确定使用反射来实现松散耦合,但任何好的模式/方法都不会涉及使用反射。
-
一般来说,您不需要在 C# 中重新编译/部署 .exe不 使用反射,除非您更改实际在 . exe,在这种情况下,无论如何您都必须重新编译。使用没有反射的接口,你应该没问题。
-
是的,请不要尝试使用反射来复制类库的功能...