如何在不使用 C# 中的接口的情况下,在另一个 class 中使用在两个不同的 class 中声明的列表?
How can I use a list declared in two different classes in another class, without using interface in C#?
我有两个类似的classes A和B,包含以下代码:
//A or B depending on class
public class LogicA
{
public List<Members> MembersA { get; set; } = new List<Member>();
public void AddMember(Member member)
{
MembersA.Add(member);
}
public List<Member> GetResultA()
{
return MembersA;
}
}
我想在另一个 class(比如 logicC)中使用 MembersA 和 MembersB 列表。
我见过类似的问题,它们大多涉及单一继承。我想使用的过程是通过多重继承从第三个 class 中的两个不同 classes 创建列表实例,但在 C# 中,只有接口支持多重继承,我正在使用 class es,因此我的问题。
有什么理由只需要使用继承吗?
一般Class成员的使用方式如下
class logicC
{
static void Main(string[] args)
{
LogicA logicA = new LogicA();
LogicB logicB = new LogicB();
List<Member> memberA = logicA.memberA;
List<Member> memberB = logicB.memberB;
}
}
您可以为您的方法使用 static
修饰符,例如:
public static class LogicA
{
public static List<Members> MembersA { get; set; } = new List<Member>();
public static void AddMember(Member member)
{
MembersA.Add(member);
}
public static List<Member> GetResultA()
{
return MembersA;
}
}
并像这样使用它:
using YourProject;
public class LogicC
{
Members members = new();
List<Members> membersList = new();
LogicA.AddMember(member);
membersList = LogicA.GetResult();
}
Logica.GetResultA
和大概 LogicB.GetResultB
return List<Member>
。所以没有问题
逻辑C可以
class LogicC{
void NoodleOnList(List<Member> input){
....
}
}
然后
LogicC lc;
lc.NoodelOnList(la.GetMembersA());
lc.NoodelOnList(lb.GetMembersb());
那么,您应该 re-consider 您的设计选择并考虑如何使您的代码不易更改。
您可以创建一个新的 class 来聚合来自 A、B 的列表。并且通过组合,这个新的 class 可以访问来自其他内部对象的列表。
public class logicC {
public LogicA logicA;
public LogicB logicB;
public List<Member> GetResultC() => logicA.GetResultA().Concat(logicB.GetResultB());
}
我有两个类似的classes A和B,包含以下代码:
//A or B depending on class
public class LogicA
{
public List<Members> MembersA { get; set; } = new List<Member>();
public void AddMember(Member member)
{
MembersA.Add(member);
}
public List<Member> GetResultA()
{
return MembersA;
}
}
我想在另一个 class(比如 logicC)中使用 MembersA 和 MembersB 列表。 我见过类似的问题,它们大多涉及单一继承。我想使用的过程是通过多重继承从第三个 class 中的两个不同 classes 创建列表实例,但在 C# 中,只有接口支持多重继承,我正在使用 class es,因此我的问题。
有什么理由只需要使用继承吗?
一般Class成员的使用方式如下
class logicC
{
static void Main(string[] args)
{
LogicA logicA = new LogicA();
LogicB logicB = new LogicB();
List<Member> memberA = logicA.memberA;
List<Member> memberB = logicB.memberB;
}
}
您可以为您的方法使用 static
修饰符,例如:
public static class LogicA
{
public static List<Members> MembersA { get; set; } = new List<Member>();
public static void AddMember(Member member)
{
MembersA.Add(member);
}
public static List<Member> GetResultA()
{
return MembersA;
}
}
并像这样使用它:
using YourProject;
public class LogicC
{
Members members = new();
List<Members> membersList = new();
LogicA.AddMember(member);
membersList = LogicA.GetResult();
}
Logica.GetResultA
和大概 LogicB.GetResultB
return List<Member>
。所以没有问题
逻辑C可以
class LogicC{
void NoodleOnList(List<Member> input){
....
}
}
然后
LogicC lc;
lc.NoodelOnList(la.GetMembersA());
lc.NoodelOnList(lb.GetMembersb());
那么,您应该 re-consider 您的设计选择并考虑如何使您的代码不易更改。
您可以创建一个新的 class 来聚合来自 A、B 的列表。并且通过组合,这个新的 class 可以访问来自其他内部对象的列表。
public class logicC {
public LogicA logicA;
public LogicB logicB;
public List<Member> GetResultC() => logicA.GetResultA().Concat(logicB.GetResultB());
}