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,这回答了你的问题吗?我还没有机会尝试,我会让你知道的!谢谢你@奥佐维,这回答了你的问题吗?我还没有机会尝试,我会让你知道的!谢谢你!