多个类的 C# 泛型方法

标签 c# .net linq generics reflection

我试图寻找解决方案,但我的问题是我什至不知道该使用什么术语。泛型、委托(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/

相关文章:

C#WPF UI在UI线程中更新数据时挂起

c# - .NET 字符串赋值移除字符

c# - 构建通用过滤器参数输入接口(interface)?

c# - 最接近数字的linq sql

c# - LINQ 查询不返回任何行

c# - 如何将 Expression<Func<TEntity, bool>> 映射到 Expression<Func<TDbEntity, bool>>

c# - Xamarin Ios 应用程序在调试时运行时卡住

c# - 无法从 'out T' 转换为 'out Component'

c# - 为什么 IdentityUser 类在 Microsoft.AspNet.Identity.EntityFramework 命名空间中而不是在 Core 包中?

c# - MSB0001 : Internal MSBuild Error: Throwing from logger shutdown