我试图寻找解决方案,但我的问题是我什至不知道该使用什么术语。泛型、委托(delegate)、LINQ、反射和抽象思想可能是解决方案的一部分,但我的“Google-fu”没有找到正确的答案。
问题:
我有多个类(ClassA
、ClassB
、ClassC
),它们都具有相同的 2-3 个属性 DoThisA
, DoThisB
, DoThisC
.
代码的工作方式是,当我处理时,我总是想做相同的代码来设置DoThisA
、DoThisB
和DoThisC
每个类(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) 的引用发送到方法来执行逻辑?
如果编写正确,ClassA
、ClassB
和 ClassC
中的每一个都会实现一些泛型类,我可以使用它,但是我不能。每个类都是独立的,但具有相同的命名属性。
关于概念/代码的任何指导?
谢谢!
最佳答案
创建一个 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;
}
}
然后您可以在 ClassA
、ClassB
和 ClassC
的任何地方调用 this.InitTheStuff()
。
关于多个类的 C# 泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26642256/