У меня нет смысла помещать корпус переключателя в цикл for.вы выйдете из цикла в первый раз, когда один из случаев вашего переключателя верен.
Но для решения проблемы неопределенности относительно возвращаемого типа, если вы знаете, что возвращаемый тип будет ссылочным типом, тогда вы можетесделать это тоже:
Вы можете установить тип возврата на object
, и тогда вызывающий должен выполнить кастинг:
public object GetValue(ContentType type)
{
switch (type)
{
case ContentType.BaseUri:
return item.BaseUri;
break;
case ContentType.Categories:
return item.Categories;
break;
case ContentType.Content:
return item.Content;
break;
case ContentType.Contributors:
return item.Contributors;
break;
case ContentType.Copyright:
return item.Copyright;
break;
}
}
вызывающий абонент:
public void Caller()
{
object x = GetValue();
if ( x.GetType() == typeof(BaseUri) ) // I assume that BaseUri is also a class name
{
BaseUri baseUri = (BaseUri)x;
// now you can use baseUri to initialize another variable in outer scopes ... or use it as a parameter to some method or ...
}
else if(x.GetType() == typeof(Category))
{
// the same logic of casting and using goes here too ...
}
}