Не должно быть ничего плохого:
bool implementsGeneric = (anObject.Implements("IBar`1") != null);
Для дополнительного кредита вы можете поймать AmbiguousMatchException, если вы хотите указать конкретный общий тип-параметр с запросом IBar.
Я не знаю, как вы используете карту, но недавно я сделал что-то вроде этого:
// GET: Mappa
public ActionResult Map()
{
// get fontane
Fontane[] fontane = db.Fontane.ToArray();
// prepare json string
string markers = "[";
// loop fontane
for (int i = 0; i < fontane.Count(); i++)
{
markers += "{";
// id
markers += string.Format("\"fId\": \"{0}\",", fontane[i].FontanaID);
// name
markers += string.Format("\"title\": \"{0}\",", fontane[i].Nome);
// position
markers += string.Format("\"lat\": \"{0}\"", fontane[i].Latitudine).Replace(",", ".") + ",";
markers += string.Format("\"lng\": \"{0}\"", fontane[i].Longitudine).Replace(",", ".") + ",";
// icon
string fIcon = fontane[i].Active == true ?
(fontane[i].Allarme == true ? "/Content/icons/fontana_R.png" : "/Content/icons/fontana_G.png") :
"/Content/icons/fontana_W.png";
// icon
markers += string.Format("\"icon\": \"{0}\"", fIcon);
markers += "},";
}
markers += "];";
ViewBag.Markers = markers;
return View();
}
в контроллере MVC. как вы можете видеть, я выбираю значки перед тем, как отправлять их на экран.
@model Presidium.Models.Fontane
@{
ViewBag.Title = "Map";
}
<div id="gMap" style="height:100vh;width:100vw;"></div>
<script>
let markers = @Html.Raw(ViewBag.Markers);
window.onload = function () {
let mapOptions = {
center: new google.maps.LatLng(41.893140, 12.483330),
zoom: 15,
mapTypeId: google.maps.MapTypeId.SATELLITE,
scrollwheel: true,
draggable: true
};
let map = new google.maps.Map(document.getElementById("gMap"), mapOptions);
for (i = 0; i < markers.length; i++) {
let data = markers[i]
let fLatLng = new google.maps.LatLng(data.lat, data.lng);
let marker = new google.maps.Marker({
position: fLatLng,
map: map,
title: data.title,
icon: data.icon
});
map.setTilt(0);
(function (marker, data) {
google.maps.event.addListener(marker, "click", function (e) {
let url = "/Fontane/Details/" + data.fId;
window.location.href = url;
});
})
(marker, data);
}
}
</script>
Теперь я не нахожу его, но у меня есть приложение, которое имеет различные анимации и значки для визуализации лучших сигналов тревоги. В конце я нахожу это простым подходом. Как я уже говорил, просматривал формы и анимацию автомобилей в режиме реального времени на карте, изменяя масштаб, и это была настоящая кровавая баня.