gpt4 book ai didi

多个类的 C# 泛型方法

转载 作者:行者123 更新时间:2023-11-30 19:16:11 25 4
gpt4 key购买 nike

我试图寻找解决方案,但我的问题是我什至不知道该使用什么术语。泛型、委托(delegate)、LINQ、反射和抽象思想可能是解决方案的一部分,但我的“Google-fu”没有找到正确的答案。

问题:我有多个类(ClassAClassBClassC),它们都具有相同的 2-3 个属性 DoThisADoThisB, DoThisC.

代码的工作方式是,当我处理时,我总是想做相同的代码来设置DoThisADoThisBDoThisC每个类(class)。

例如,为了简化,逻辑将始终是:

{some computations to set string currentValueImProcessing to something}
if (xyz) [ClassA|B|C].DoThisA = currentValueImProcessing
else [ClassA|B|C].DoThisB = currentValueImProcessing

我不想一遍又一遍地编写相同的语句,那么如何将类 (A,B,C) 的引用发送到方法来执行逻辑?

如果编写正确,ClassAClassBClassC 中的每一个都会实现一些泛型类,我可以使用它,但是我不能。每个类都是独立的,但具有相同的命名属性。

关于概念/代码的任何指导?

谢谢!

最佳答案

创建一个 interface对于您的属性(property):

internal interface IDoThis
{
public string DoThisA { get; set; }
public string DoThisB { get; set; }
public string DoThisC { get; set; }
}

然后,让您的类实现它:

public class ClassA : IDoThis
{
public string DoThisA { get; set; }
public string DoThisB { get; set; }
public string DoThisC { get; set; }
}

public class ClassB : IDoThis
{
// Same properties
}

public class ClassC : IDoThis
{
// Same properties
}

这样,您就可以在某处创建一个静态初始化方法:

internal static class MyClassesExtensions
{
public static void InitTheStuff(this IDoThis obj)
{
// Do something here, for example:
if (String.IsNullOrEmpty(obj.DoThisA))
obj.DoThisA = "foo";
else
obj.DoThisB = obj.DoThisC;
}
}

然后您可以在 ClassAClassBClassC 的任何地方调用 this.InitTheStuff()

关于多个类的 C# 泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26642256/

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