3

誰かが私のクラスの問題を回避するのを手伝ってもらえますか?

私はAddressクラスを持っています:

public class Address
{
    public string addressDescription { get; set; }
    public string addressNumber { get; set; }
    public string adddressLine1 { get; set; }
    public string adddressLine2 { get; set; }
    public string adddressLine3 { get; set; }
    public string addressPostCode { get; set; }
    public double addressLatitude { get; set; }
    public double addressLongitude { get; set; }
}

そして私はルートクラスを持っています:

public class Route
{
    public Address from { get; set; }
    public Address to { get; set; }
}

そして私のコントローラーでは、次のようなダミー情報を設定しました。

public ActionResult FareCalculator(string from , string to)
    {

        var myroute = new Route();

        myroute.from.addressDescription = from;
        myroute.from.addressLatitude = 51.481581;
        myroute.from.addressLongitude = -3.179090;
        myroute.to.addressDescription = to;
        myroute.to.addressLatitude = 51.507335;
        myroute.to.addressLongitude = -0.127683;

        return View(myroute);
    }

しかし、プロジェクトを実行すると、myroute.from.addressDescription=from;にフォールオーバーします。オブジェクト参照がオブジェクトのインスタンスに設定されていないことを示す行。

自分が間違っていることがわかりません。誰か助けてもらえますか?

ありがとう

トレブ

4

4 に答える 4

3

の新しいインスタンスを作成し、Addressそれに割り当てる必要がfromありますto

public ActionResult FareCalculator(string from , string to)
{

    var myroute = new Route();
    myroute.from = new Address(); // new instance
    myroute.from.addressDescription = from;
    myroute.from.addressLatitude = 51.481581;
    myroute.from.addressLongitude = -3.179090;

    myroute.to = new Address(); // new instance
    myroute.to.addressDescription = to;
    myroute.to.addressLatitude = 51.507335;
    myroute.to.addressLongitude = -0.127683;

    return View(myroute);
}
于 2013-02-17T14:15:08.000 に答える
2

fromフィールドとtoフィールドを初期化するためにコンストラクターを使用することを提案できますか?そうしないと、Routeクラスを使用するたびにオブジェクトを新しくする必要があります。

public class Route
{
    public Address from { get; set; }
    public Address to { get; set; }

    public Route()
    {
        from = new Address();
        to = new Address();
    }
}

そうすれば、提供したとおりにコードを使用できます。

    var myroute = new Route();

    myroute.from.addressDescription = from;
    myroute.from.addressLatitude = 51.481581;
    myroute.from.addressLongitude = -3.179090;
    myroute.to.addressDescription = to;
    myroute.to.addressLatitude = 51.507335;
    myroute.to.addressLongitude = -0.127683;

    return View(myroute);
于 2013-02-17T14:22:05.287 に答える
1

インスタンスを作成しましたが、 (forおよび)Routeの新しいインスタンスを作成するのを忘れています。Addressfromto

var myroute = new Route
{
    from = new Address(),
    to = new Address()
};
于 2013-02-17T14:15:11.017 に答える
0

myroute.fromそして、クラスmyroute.toのインスタンスである必要があります。Address

 public ActionResult FareCalculator(string from , string to)
 {
        var myroute = new Route();

        myroute.from = new Address();
        myroute.from.addressDescription = from;
        myroute.from.addressLatitude = 51.481581;
        myroute.from.addressLongitude = -3.179090;

        myroute.to = new Address();
        myroute.to.addressDescription = to;
        myroute.to.addressLatitude = 51.507335;
        myroute.to.addressLongitude = -0.127683;

        return View(myroute);
    }
于 2013-02-17T14:17:34.707 に答える