Помогите адаптировать методы для C# из Java (методы используются в расширении базового Dictionary. Тема здесь.):
public <A> A getObject(final String key, final Class<A> type)
{
final Object val = get(key);
if (val == null || !type.isAssignableFrom(val.getClass()))
return null;
return (A) val;
}
public <E extends Enum<E>> E getEnum(final String name, final Class<E> enumClass)
{
final Object val = get(name);
if (val != null && enumClass.isInstance(val))
return (E) val;
if (val instanceof String)
return Enum.valueOf(enumClass, (String) val);
throw new IllegalArgumentException("Enum value of type " + enumClass.getName() + "required, but found: " + val + ".");
}
Для первого метода я использую следующую реализацию:
public object getObject(string key, Type type)
{
object val = this[key];
if (val == null || !type.IsAssignableFrom(val.GetType()))
return null;
return val;
}
Но у неё есть один недостаток - нужно постоянно указывать тип получаемого объекта. Выглядит это так:
Version _build = (Version) set.getObject("buildVersion", typeof(Version));
А почему бы не просто
public T GetObject<T>(string key) where T:class
{
return this[key] as T;
}
Вызов будет как
var build = set.GetObject<Version>("buildVersion");
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть ли способ прочитать данные из Stream, созданного в C# в unmanaged C++ коде? Заранее благодарен)
Только изучаю студию, решил исследовать возможности встроенного Server Explorer на предмет хватит ли его на простые операции типа добавить таблицу,...
Столкнулся с такой проблемойСтоит lazy loading в конструкторе контекста (db first) Когда вытаскиваю запись с базы то вместе с ней приходят все navigation...
Подскажите, пожалуйста, почему вызов метода с модификатором new не является полиморфным, а с модификаторами virtual/override является?