0

以下のような Userdetails クラスがあります

public class UserDetails
{
    public string ssn;

    public string username;

    public string emailid;

    public Address address;
}

ここで Address は、次のようなパブリック フィールドを持つ別のクラスです。

public class Address
{
    public int id;

    public string address;
}

ここで、ユーザーがアプリにログインすると、Userdetails オブジェクトを作成します。現在、userdetails 内でアドレス オブジェクトを頻繁に使用することはありませんが、データは取得しています。

このシナリオでは、C# 4.0 の遅延初期化機能をどのように使用できますか。

データは直接の db クエリから取得され、これらのクラスにはデータを取得するためのコンストラクターやその他の手段がないことに注意してください。これらは、C# でのデータベース フィールドの単なる表現です。

ここで遅延初期化を使用する最良の方法を提案してください。

4

1 に答える 1

1

プライベートな遅延アドレスを持つことができます:

private Lazy<Address> _address = new Lazy<Address>(() => {
    ---code to get the address---
});

public Address address {
    get {
        return _address.Value;
    }    
}
于 2011-07-11T06:25:25.537 に答える