【问题标题】:C# Dependency Injection SampleC# 依赖注入示例
【发布时间】:2010-12-26 05:41:57
【问题描述】:

我想知道在处理依赖注入时让对象继承自实现接口的类是否有意义 例子

public interface IPeople
    {
        string Name { get; set; }
        int Age { get; set; }
        string LastName { get; set; }

    }

public class CPeople : IPeople
    {..implemented IPeople Methods..}

这样我只需要在一个地方实现接口。我只是不确定这是否会被认为是松耦合。

public class Dad : CPeople
    {
    }



public class Mom : CPeople
    {
    }

这样在我的控制器里面我就有了

public class Parent

{

    IPeople objMom;
    IPeople objDad;
    Parents m_Parent;

    public void factoryMethod()
    {

        objMom = new Mom();
        objMom.Age = 32;
        objMom.Name = "Jane";
        objMom.LastName = "Doe";

        objDad = new Dad();
        objDad.Age = 25;
        objDad.Name = "John";
        objDad.LastName = "Doe";

        m_Parent = new Parents(objMom,objDad);

    }
    public override string ToString()
    {                      
        return m_Parent.Mom.Name + " " + m_Parent.Mom.LastName +  " is " + m_Parent.Mom.Age + " years of age, " + m_Parent.Dad.Name + " " + m_Parent.Dad.LastName + " aged " + m_Parent.Dad.Age.ToString();
    }

【问题讨论】:

  • 请,请,请,请不要在 C# 中使用匈牙利符号。这是没有意义的,因为所有的东西都是类和对象,看着它就很痛苦。
  • 如果你的妈妈和爸爸班级是相同的,为什么要为它创建两个单独的班级?您可以通过设置一个带有 bool/enum 的类来说明它是母亲还是父亲,从而达到同样的效果。也许你的例子太简单了,没有意义?
  • @Konamiman:有时匈牙利符号很有用(应用程序匈牙利文与系统匈牙利文 - en.wikipedia.org/wiki/…)。我同意这不是其中之一。
  • @Mark Byers,@Konamiman - 不幸的是,99% 的人误用了匈牙利符号。很多人使用它来显示静态类型语言中的类型,而匈牙利符号的最初用途是显示它的使用位置(App Hungarian notation)。
  • 简单,伙计们。匈牙利符号是每隔几年就会进进出出的东西之一,并且会被无休止地讨论,好像它很重要一样。

标签: c# .net dependency-injection


【解决方案1】:

是的,这被认为是松散耦合,因为控制器不需要了解接口定义之外的内部对象。

如果您关心将妈妈/爸爸分开,您可以只为它们实现接口(即使它们是空的)并使用这些接口来确保父母既是 IMom 又是 IDad。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多