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 關注
- 424 瀏覽
添加回答
舉報