On 2013-02-04 10:02, o3o wrote:
I'm a C# programmer, when I apply IoC pattern  I use "readonly" keyword
(http://msdn.microsoft.com/en-us/library/acdd6hb7%28v=vs.71%29.aspx) in
this manner:

:// C# code
:interface IFoo {
:  void Fun();
:}
:
:class Foo: IFoo {
:  void Fun() {...}
:}
:class Bar {
:  private readonly IFoo foo;
:  // inject IFoo into Bar
:  Bar(IFoo foo) {
:    // assert(foo != null);
:    this.foo = foo;
:  }
:  void Gun() {
:    // foo = new Foo(); //// ERROR: foo is readonly!
:    foo.Fun();
:  }
:}

Can someone help me to translate "readonly IFoo foo;" so that the dmd
compiler raises an error when I write "foo = new Foo();" ?

The closest would probably be defining a property with only a getter:

class Bar
{
    private IFoo foo_;

    private @property foo () { return foo_; }

    this (IFoo foo)
    {
        foo_ = foo;
    }
}

You can still change the "foo_" variable.

--
/Jacob Carlborg

Reply via email to