我有一个问题,我有两个实现,我想共享一个接口(interface),但它们将具有不同类型的“相同参数”,请参阅一个 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);
}
如何让实现共享接口(interface),以便我不必更改 GetObjectMethod 中的某些内容?
我认为也许一个想法是像这样创建一个新的 类型 并在公共(public)接口(interface)中声明它。通过这种方式,实现知道它应该使用哪个属性:
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;
}
最好的方法是什么?
最佳答案
您可以创建接受字符串(或对象)的 GetObjectBy 方法,然后在接口(interface)的实现中解析(或转换)id:
public Class1 : IGetObject {
public Foo GetObjectBy(string Id)
{
var id = Int32.Parse(Id);
//...
}
}
public Class2 : IGetObject {
public Foo GetObjectBy(string Id)
{
var id = new Guid(Id);
//...
}
}
关于c# - 与不同类型的接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20125160/