发送变量到另一个类

时间:2019-03-13 14:57:43

标签: c#

我正在尝试将变量 id 从一个类发送到另一个类, 由于某种原因,我收到错误-> 需要对象引用

返回错误的字符串

 public string RegApplicantInfo1 { get; } = $"/v1/consumer/applications/{testConsumer.id}/register-applicant-contact-information";

由于类似的功能对我有用,所以我无法弄清楚逻辑为什么不起作用。

Users.cs

public class Users
{
    public class TestConsumer
    {
        public string id { get; } = "XXXXXXXX";
    }
}

Uri.cs

public class Uri
    {

    private Users.TestConsumer testConsumer;


    public Uri(Context context)
    {
        Context = context;
        testConsumer = new Users.TestConsumer();
    }

        public class RegisterUri
        {
                public string RegApplicantInfo1 { get; } = $"/v1/consumer/applications/{testConsumer.id}/register-applicant-contact-information";
        }
    }

2 个答案:

答案 0 :(得分:1)

两个问题:

1)testConsumerUri类的成员,而不是RegisterUri类的成员,因此无法从RegisterUri类中运行的代码上下文访问它。

2)即使已解决,也要尝试使用testConsumer实例化之前。当该值取决于在实例化该类之前不会设置的变量时,您不能为该属性设置硬编码默认值。

尚不清楚您是否打算将testConsumer居住在RegisterUri中,还是打算将RegApplicantInfo1居住在Uri中,还是打算将RegisterUri居住在从Uri继承(而不仅仅是成为一个内部类),以便它能够从其父级访问该属性。

所以这是使错误消失的一种方法-在这种情况下,使用继承。 RegisterUri现在继承自Uri,而testConsumer现在是protected,因此子类可以访问它。看来这可能是合乎逻辑的方法,但是我无法知道这是否是您真正想要的行为(您只是通过查看错误来描述问题,而不是希望达到的目的)。

public class Users
{
    public class TestConsumer
    {
        public string id
        {
            get;
        }

        = "XXXXXXXX";
    }
}


public class Uri
{
    protected Users.TestConsumer testConsumer;
    private Context Context;
    public Uri(Context context)
    {
        Context = context;
        testConsumer = new Users.TestConsumer();
    }
}

public class RegisterUri : Uri
{
    public RegisterUri(Context context): base (context)
    {
    }

    public string RegApplicantInfo1
    {
        get
        {
            return $"/v1/consumer/applications/{testConsumer.id}/register-applicant-contact-information";
        }
    }
}

演示:https://dotnetfiddle.net/A6Z41a

答案 1 :(得分:0)

我猜这个代码甚至无法编译...错误出现在代码的第二部分

应该是这样的: 对于第一部分不确定,您要在哪里设置变量值?

public class Users
{
    public class TestConsumer
    {
        public string id { get; }
    }
}


public class Uri
{
   private Users.TestConsumer testConsumer;
   //you are missing this declaration
   private Context context;
   public Uri(Context context)
   {
     this.context = context; <----- here if you try to assign context to Context class, it will give error and ask for a reference
     testConsumer = new Users.TestConsumer();
   }
}