У меня есть проблема, когда у меня есть две реализации, которые я хочу разделить с интерфейсом, но они будут иметь разные типы для «того же параметра», см. Один Guid
и один Int
.Интерфейс с различными типами
Например:
public Class1 : IGetObject {
GetObjectBy(int Id);
}
public Class2 : IGetObject {
GetObjectBy(Guid Id);
}
На другом конце приложения аргумент «Идентификатор» будет поступать из пользовательского ввода, который является строкой. Поэтому я также
public GetObjectMethod(){
string id = dropdown.SelectedItem.Text;
IGetObject GetObject = Shared.Instance.GetObject;
var result = GetObject.GetObjectBy(id);
}
Как я могу сделать свою долю РЕАЛИЗАЦИИ интерфейса, так что я не должен что-то изменить в GetObjectMethod?
Возможно, идея состоит в том, чтобы создать новый тип и объявить об этом в общем интерфейсе. Таким образом, реализация знает, какой из них следует использовать:
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». –