我已经在我的项目中实现了一个工厂,最近有人建议我在我的类上使用属性,这样工厂就可以确定实例化哪个类并传回。我是开发领域的新手,试图严格遵循松耦合规则,我想知道依赖“钩子”(属性)是否与此背道而驰?
发布于 2013-03-28 23:18:51
下面是我用来基于属性值创建具体实例的工厂实现。它还使用参数实例化。
class ViewFactory
{
public static IView GetViewType(string PropertyValue, SomeOtherObject parentControl){
Assembly assembly = Assembly.GetAssembly(typeof(ViewFactory));
var types = from type in assembly.GetTypes()
where Attribute.IsDefined(type,typeof(ViewTypeAttribute))
select type;
var objectType = types.Select(p => p).
Where(t => t.GetCustomAttributes(typeof(ViewTypeAttribute), false)
.Any(att => ((ViewTypeAttribute)att).name.Equals(PropertyValue)));
IView myObject = (IView)Activator.CreateInstance(objectType.First(),parentControl);
return myObject;
}
}
[ViewTypeAttribute("PropertyValue", "1.0")]
class ListboxView : IView
{
public ListboxView(FilterDocumentChoseTypeFieldControll parentControl)
{
}
public override void CreateChildrens()
{
}
}
https://stackoverflow.com/questions/4387573
复制相似问题