<分区>
考虑一个函数LengthOfName
;它接收一个具有 name
属性的对象,并返回其名称的长度:
class Dog {
public string Name;
}
class Human {
public string Name;
}
class MainClass {
public static int LengthOfNameDog (Dog dog) {
return dog.Name.Length;
}
public static int LengthOfNameHuman (Human human) {
return human.Name.Length;
}
public static void Main (string[] args) {
var Fido = new Dog { Name = "Fido" };
var Alex = new Human { Name = "Alex" };
Console.WriteLine (LengthOfNameDog(Fido));
Console.WriteLine (LengthOfNameHuman(Alex));
}
}
这不是很好,因为我们必须重复一遍。我知道已经有一个标准的方法来解决这个问题,即让 Dog
和 Human
继承自一个类,例如:
class ThingWithName {
public string Name;
}
class Dog : ThingWithName {}
这很好。 我遇到的问题是我使用的是从 Entity Framework 自动生成的类定义,所以我不认为我想弄乱他们的类说他们继承自一些大师类。
我想做的是实现一个函数,该函数接受具有给定属性的任何对象的实例,例如,在上面的示例中,任何具有名称
属性。
这在 C# 中可行吗?