【发布时间】:2012-05-18 19:20:32
【问题描述】:
好的,我搜索并看到了一些关于如何使用其名称创建类的问题。我的问题不太一样,所以我还是要问。
我的应用程序有 2 个类,例如“A”和“B”。在另一个类中,我需要使用这两个类(第三个类由外部服务调用)。外部服务仅将两个“A”和“B”类的名称作为字符串传递给我。在第三节课上,我知道我可以这样做:
case "A":
create an instance of A
case "B":
create an instance of B
但这似乎很奇怪。我想动态地做,所以我想做 Activator.CreateInstance 但不确定它是否是好的编程,因为当您远程加载程序集时似乎使用了“CreateInstance”。就我而言,一切都在一个项目中。
有什么建议吗?非常感谢!
【问题讨论】:
-
Activator.CreateInstance既被框架大量使用,也被大量优化。它的使用没有任何问题。 -
你提到的奇怪的 case "A": create instance [...] 也被称为工厂设计模式(可能没有应有的结构,但您可以为此使用
switch/case)。您可以在此处阅读此模式:dofactory.com/Patterns/PatternAbstract.aspx 和此处:codeproject.com/Articles/68670/The-Factory-Pattern -
除了上面的链接之外,值得指出的是,如果您经常遇到这种模式,您可能需要研究像 Spring.NET、Castle Windsor 或 StructureMap 这样的控制反转框架.
标签: c# createinstance