gpt4 book ai didi

c# - 如何在传递接口(interface)时访问不同具体类的属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:33 24 4
gpt4 key购买 nike

我正在学习 C# 并试图了解在将接口(interface)传递给使用者类时如何访问类的不同属性。请指导我。

public interface ITest
{
int ID {get; set;}
}

public class TestA: ITest
{
public int A {get; set;}
}

public class TestB: ITest
{
public int B {get; set;}
}


public void Test(ITest test)
{
// how to check/access property of TestA
// how to check/access property of TestB
}

尝试:

   public void Test(ITest test)
{
if(test.GetType() == typeof(TestA))
{
test.A = 45678;
}
}

最佳答案

如果您需要对接口(interface)的继承者做一些特定于实现的事情,请不要嗅探类型...编写一个特定于实现的方法来为您做这件事。现在调用者不需要进一步了解接口(interface):

void Main()
{
var tests = new ITest[] { new TestA { A = 1, ID = 0 }, new TestB { B = 10, ID = 1 } };
foreach (var test in tests)
{
test.DoSomeProcessing();
}
}

public interface ITest
{
int ID { get; set; }
void DoSomeProcessing();
}

public class TestA : ITest
{
public int A { get; set; }
public int ID { get; set; }
public void DoSomeProcessing()
{
Console.WriteLine("A = " + this.A);
}
}

public class TestB : ITest
{
public int B { get; set; }
public int ID { get; set; }
public void DoSomeProcessing()
{
Console.WriteLine("B = " + this.B);
}
}

关于c# - 如何在传递接口(interface)时访问不同具体类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56690714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com