C#代码重用公共类Foo <t>方法参数</t>

时间:2013-04-21 07:21:19

标签: c# types constructor code-reuse

我希望有人可以帮我解决问题。我正在尝试创建一个新类型:

public class Foo<T>

其唯一方法的工作是迭代另一个类的属性。大约有20个类定义了不同数量的属性:

public class Bar {
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Shirt {
    public string Color { get; set; }
    public string Size { get; set; }
    public string Brand { get; set; }
}

public class Pants {
    public string Color { get; set; }
    public string Waist { get; set; }
    public string Length { get; set; }
    public string Inseam { get; set; }
}

公共课Foo的方法是:

public class Foo<T> {
    public string FooMethod(T before, T after /* other variables? */) {
        // compare before & after
    }
}

每个命名相同的类将进入Foo的主要方法两次,但具有不同的属性值。所以{Id}之前Bar 姓名可以是1 & "Bar"Bar 是在Id&amp;姓名可以是2 & "BarBar"

从这里开始,将进行其他操作以比较之前和之前的每个属性。之后。但是,由于每个类中的属性数量各不相同,而我只想使用一种方法,因此我处于两难境地。

1 个答案:

答案 0 :(得分:0)

如果您希望在FooMethod中比较多种类型的对象,您可以在所有类(Bar,Shirt,Pants ...)中覆盖Equals和GetHashcode方法,并在那里进行比较。这样你的FooMethod只会调用before.Equals(after)来比较它们。