【发布时间】:2013-12-06 04:05:24
【问题描述】:
我有一个问题,我有两个实现我想共享一个接口,但是它们对于“相同的参数”会有不同的类型,请参阅一个 Guid 和一个 Int。
例如:
public Class1 : IGetObject {
GetObjectBy(int Id);
}
public Class2 : IGetObject {
GetObjectBy(Guid Id);
}
在应用程序的另一端,“Id”参数将来自用户输入的字符串。所以我也有
public GetObjectMethod(){
string id = dropdown.SelectedItem.Text;
IGetObject GetObject = Shared.Instance.GetObject;
var result = GetObject.GetObjectBy(id);
}
如何使实现共享接口,这样我就不必更改 GetObjectMethod 中的某些内容?
我认为可能的想法是创建一个像这样的新 type 并在公共界面中声明它。这样,实现就知道它应该使用哪个属性:
public class ObjectId(){
public ObjectId(string id){
if(Guid.TryParse(id)){
/// Figure out what value that should be set
}
}
public Guid ObjectIdAsGuid;
public Int ObjectIdAsInt;
}
最好的方法是什么?
【问题讨论】:
-
你的接口定义是什么?我猜它应该有 2 个
GetObjectBy的重载 -
那么两者都必须实现。
-
问题是我不知道如何声明接口。即使我有一个重载,GetObjecetMethod 也需要确定它在“id”参数上的类型。