首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我是否可以使用属性,让我的工厂知道它可以/应该实例化什么,而不违反“松散耦合”规则?

我是否可以使用属性,让我的工厂知道它可以/应该实例化什么,而不违反“松散耦合”规则?
EN

Stack Overflow用户
提问于 2010-12-08 20:47:22
回答 4查看 2.8K关注 0票数 3

我已经在我的项目中实现了一个工厂,最近有人建议我在我的类上使用属性,这样工厂就可以确定实例化哪个类并传回。我是开发领域的新手,试图严格遵循松耦合规则,我想知道依赖“钩子”(属性)是否与此背道而驰?

EN

Stack Overflow用户

发布于 2013-03-28 23:18:51

下面是我用来基于属性值创建具体实例的工厂实现。它还使用参数实例化。

代码语言:javascript
运行
复制
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()
{

}

}
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4387573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档