【发布时间】:2016-03-31 10:03:21
【问题描述】:
我需要创建一个包含各种对象的工厂。尽可能抽象。能够通过参数从过去的条件创建各种对象,但不知道具体的类。
我想通过将枚举的值传递给工厂来做到这一点,它必须能够通过反射来查找命名空间中的所有类,这些类使用的属性值与最后一个参数相同。
我留下以下代码 sn-ps 作为参考。
具体类的一个例子:
[Batatinha(SaborCode.Churrasco)]
internal class BatatinhaChurrasco : AbstractBatatinha
{
public override string Sabor
{
get { return "Churrasco"; }
}
}
这个工厂的一个例子:
internal class BatatinhaFactory
{
internal AbstractBatatinha GetBatatinha(SaborCode sabor)
{
// Some logic ... possibly using reflection.
}
}
所需调用的示例:
AbstractBatatinha batatinha = new BatatinhaFactory().GetBatatinha(SaborCode.Churrasco);
Console.WriteLine(batatinha.Sabor);
// ==> "Churrasco"
Obs.:库应该是可移植的。 (.NET Framework 4.0.3、Silverlight 5、Windows 8、Windows Phone 8.1、Windows Phone Silverlight 8)
简而言之:给定一个枚举的值,如何使用反射检索将参数作为属性的类的类型?
【问题讨论】:
-
你有什么问题?
-
给定一个枚举的值,如何通过反射获取使用参数作为属性的类的类型?
-
这非常接近你想要的:stackoverflow.com/a/4387761
标签: c# linq reflection system.reflection