2 回答
TA贡献1851条经验 获得超4个赞
如果您想要编译时安全,并且您不能修改Fooand Bar,则处理此问题的典型方法是使用重载:
public string GetName(Foo o) { return o.Name; }
public string GetName(Bar o) { return o.Name; }
编译器会自动选择匹配参数类型的方法,所以你只需要调用它
GetName(eitherObject);
...而且它是类型安全的。
你不能真正使用泛型,因为 Foo 和 Bar 缺少一个公开的通用接口Name。
当然,您可以使用反射,但这意味着放弃编译时安全。
TA贡献1780条经验 获得超1个赞
这似乎是您可以使用继承的情况。如果这两个类具有相似的字段,您可以让它们实现一个具有所有共享字段的基类。这是一个例子:
public class BaseEntity
{
int val;
protected string name;
public string Name
{
get
{
return name; // Only get is exposed to prevent modifications
}
}
}
public class ClassA : BaseEntity
{
// Other fields or methods
}
public class ClassB : BaseEntity
{
// Other fields or methods
}
- 2 回答
- 0 关注
- 449 浏览
添加回答
举报
