我是C#
的新手,我对如何使这项工作有疑问:
namespace Core {
public class A{
private reandonly string _var;
public A(string var){
_var=var
}
public GetValue() => return _var;
}
}
using System;
namespace Core.Resources {
public static class B{
public static void DoSomething(){
Console.Writeline($"{A.GetValue()}");
}
}
}
public class C{
static void Main(string args[]){
A a = new A("name");
a.Resources.B.DoSomething();
}
}
A
位于主文件夹中,B
位于Main/Resources
文件夹中,它们共同构成一个类库,Program.cs
正在使用此库。有没有办法使这项工作?
答案 0 :(得分:0)
如果你写a.Resources
,你基本上是在尝试检索类Resources
的成员A
,这显然没有定义。由于B
是Core.Resources
命名空间中定义的静态类,因此您只需按如下方式更改代码:
public class C
{
public static void Main(string args[])
{
A a = new A("A");
Core.Resources.B.DoSomething();
}
}
或者,如果您不希望每次都引用命名空间:
using Core.Resources;
public class C
{
public static void Main(string args[])
{
A a = new A("A");
B.DoSomething();
}
}
请注意,如果yuu显式定义了接受一个或多个参数的A
的公共构造函数,则默认的无参数构造函数不再可用...因此您必须将字符串传递给A
构造函数,如果您不想在控制台中看到错误。或者,您必须重写A
类,以便它实现默认的无参数编译器,例如:
public class A
{
private reandonly String _var;
public A() : this(String.Empty) { }
public A(String var)
{
_var = var;
}
}
根据OP评论和问题更改进行编辑
public class A
{
private reandonly String _var;
public String Var
{
get { return _var; }
}
public A(String var)
{
_var = var;
}
}
public static class B
{
public static void DoSomething(String text)
{
Console.Writeline(text);
}
}
public class C
{
public static void Main(string args[])
{
A a = new A("name");
B.DoSomething(a.Var);
}
}