C# 如何访问C类中A类的公共属性MyProperty

C# 如何访问C类中A类的公共属性MyProperty,c#,C#,我有以下代码: public class A { public int MyProperty {get; set;} } public class B { A myInstance = new A(); myInstance.MyProperty = 10; } public class C { public void InvokeA() { //How to access MyPropery here? BInstance =

我有以下代码:

public class A
{
   public int MyProperty {get; set;}
}

public class B
{
   A myInstance = new A();
   myInstance.MyProperty = 10;
}

public class C
{
   public void InvokeA()
   {
        //How to access MyPropery here?
        BInstance = new B();
        Console.WriteLine(B.myInstance.MyProperty.ToString()); 
   }
}
我正在寻找如上所述的访问我的财产的方法。继承不是选项,因为我的类C已经从某个基类继承。一种不将任何给定类声明为静态类的方法会很好

谢谢,
Orz

为了实现您的目标,您需要将
B.MyInstance
作为
B
类的属性公开,就像您将
a.MyProperty
作为
a
类的属性公开一样

编辑:根据其他人关于使用
static
关键字的评论,以下是您可能希望代码的外观:

public class A
{
   public int MyProperty { get; set; }
}

public static class B
{
   static B()
   {
       MyInstance = new A();
       MyInstance.MyProperty = 10;
   }

   public static A MyInstance { get; set; }
}

public class C
{
   // not sure what your intention is here
   public C()
   {
       System.Console.WriteLine(B.MyInstance.MyProperty.ToString()); // "10\n"
   }
}

为了实现您的目标,您需要将
B.MyInstance
作为
B
类的属性公开,就像将
a.MyProperty
作为
a
类的属性公开一样

编辑:根据其他人关于使用
static
关键字的评论,以下是您可能希望代码的外观:

public class A
{
   public int MyProperty { get; set; }
}

public static class B
{
   static B()
   {
       MyInstance = new A();
       MyInstance.MyProperty = 10;
   }

   public static A MyInstance { get; set; }
}

public class C
{
   // not sure what your intention is here
   public C()
   {
       System.Console.WriteLine(B.MyInstance.MyProperty.ToString()); // "10\n"
   }
}

对。您可以将类从A继承到B,如下所示:

public class A
{
   public int MyProperty {get; set;}
}

public class B : A
{
    public B()
        : A() 
    {
        MyProperty = 1;
    }
}
现在您可以执行以下操作:

(new B()).MyProperty
或者使用单例方法来解决:

public class B
{
    private static _a;

    public class A
    {
        public int MyProperty {get; set;}
    }

    public static A AA {
        if (_a == null) {
            _a = new A();
        }

        return _a;
    }  
}
此实现将返回

B.A.MyProperty.ToString();

对。您可以将类从A继承到B,如下所示:

public class A
{
   public int MyProperty {get; set;}
}

public class B : A
{
    public B()
        : A() 
    {
        MyProperty = 1;
    }
}
现在您可以执行以下操作:

(new B()).MyProperty
或者使用单例方法来解决:

public class B
{
    private static _a;

    public class A
    {
        public int MyProperty {get; set;}
    }

    public static A AA {
        if (_a == null) {
            _a = new A();
        }

        return _a;
    }  
}
此实现将返回

B.A.MyProperty.ToString();

考虑以下类别:

public class A
{
    public int MyProperty { get; set; }
}

public class B
{
    public A GetAInstance()
    {
        A myInstance = new A();
        myInstance.MyProperty = 10;

        return myInstance;
    }
}

public class C
{
    private B BInstance;

    public void InvokeA()
    {
        BInstance = new B();

        Console.WriteLine(BInstance.GetAInstance());
    }
}
然后您将在Main中创建您的C实例:

    static void Main(string[] args)
    {
        C cInstance = new C();
        cInstance.InvokeA();
    }

考虑以下类别:

public class A
{
    public int MyProperty { get; set; }
}

public class B
{
    public A GetAInstance()
    {
        A myInstance = new A();
        myInstance.MyProperty = 10;

        return myInstance;
    }
}

public class C
{
    private B BInstance;

    public void InvokeA()
    {
        BInstance = new B();

        Console.WriteLine(BInstance.GetAInstance());
    }
}
然后您将在Main中创建您的C实例:

    static void Main(string[] args)
    {
        C cInstance = new C();
        cInstance.InvokeA();
    }


B
必须是一个实例,如果您想访问其成员。对于您描述的访问,属性必须声明为
静态
-这就是您要找的吗?我猜@Codor很困惑,因为我在编辑之前像静态属性一样使用了“MyProperty”。对不起@Orzowei请重新打开您的问题,我将添加我的answer@Alexandr谢谢你的努力!我是stackoverlow.com的新手,不知道如何重新打开它。我编辑了我的问题,但它仍然处于保留状态。
B
必须是一个实例,如果你想访问它的成员。对于你描述的访问,属性必须声明为
static
-这就是你要找的吗?我猜@Codor很困惑,因为我在编辑之前像静态属性一样使用了“MyProperty”。对不起@Orzowei请重新打开您的问题,我将添加我的answer@Alexandr谢谢你的努力!我是stackoverlow.com的新手,不知道如何重新打开它。我编辑了我的问题,但它仍处于保留状态。继承对我无效,因为我的类已被继承。我要试试另一种解决办法!谢谢@如果你觉得我的答案有帮助,如果你能把它标记出来,我将不胜感激。如果它不能让你达到你想要去的地方,请让我知道你缺少了什么。@Orzowei-很高兴听到它有帮助!听起来你才刚刚开始学习C#-我发现它是最令人愉快的编程语言之一。玩得高兴继承对我无效,因为我的类已被继承。我要试试另一种解决办法!谢谢@如果你觉得我的答案有帮助,如果你能把它标记出来,我将不胜感激。如果它不能让你达到你想要去的地方,请让我知道你缺少了什么。@Orzowei-很高兴听到它有帮助!听起来你才刚刚开始学习C#-我发现它是最令人愉快的编程语言之一。玩得高兴然而,在没有解释的情况下对某件事情进行否决是您在StackOverflow上可以做的最没有建设性的事情之一。我很高兴接受这个事实,这不是一个好的答案,但至少请让我知道你为什么这么想!我们都是来学习的@马修沃森-哈哈哈!不,我没有。无论如何,你的评论与OP问题中的代码有关,而不是我对上述问题的回答;就我所知,你的回答是正确的。然而,在没有解释的情况下否决某些东西是你在StackOverflow上能做的最没有建设性的事情之一。我很高兴接受这个事实,这不是一个好的答案,但至少请让我知道你为什么这么想!我们都是来学习的@马修沃森-哈哈哈!不,我没有。无论如何,你的评论与OP问题中的代码有关,而不是我对上述问题的回答;就我所知,你的答案是正确的。@Orzowei,这回答了你的问题吗?我还没有机会尝试,我会让你知道的!谢谢你@奥佐维,这回答了你的问题吗?我还没有机会尝试,我会让你知道的!谢谢你!