Odbicie to zdolność programu do obserwowania i / lub modyfikowania jego struktury i / lub zachowania w czasie wykonywania. Refleksja zależy od obsługiwanego języka programowania - należy oznaczyć język programowania używany podczas używania tego znacznika.
Używam adnotacji do dynamicznego ustawiania wartości pól w klasach. Ponieważ chcę to zrobić niezależnie od tego, czy jest to publiczne, chronione czy prywatne, za setAccessible(true)każdym razem przed wywołaniem set()metody wywołuję obiekt Field . Moje pytanie brzmi: jaki wpływ ma to setAccessible()wezwanie na samo pole? Mówiąc dokładniej, powiedzmy, że jest to …
ciężko pracować z polami struct przy użyciu reflectpakietu. w szczególności nie wymyślili, jak ustawić wartość pola. type t struct {fi int; fs string} var rt = t {123, "jblow"} var i64 int64 = 456 uzyskanie nazwy pola i - wydaje się, że działa var field = reflect.TypeOf(r).Field(i).Name uzyskanie wartości pola …
czy jest jakiś sposób, aby odzyskać typ Tod IEnumerable<T>poprzez odbicie? na przykład mam zmienne IEnumerable<Child>informacje; chcę odzyskać typ dziecka poprzez refleksję
Używam następującego kodu w stopce w moim pliku _Layout.cshtml, aby umieścić dane wersji AssemblyInfo w stopce każdej strony w mojej witrynie MVC3. Jednak: @System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() Po prostu drukuje w stopce: Revision 0.0.0.0 Kiedy zmodyfikowałem widok, aby wyświetlić wszystkie informacje o zestawie dla „Wykonywania zestawu”, używając następującego @System.Reflection.Assembly.GetExecutingAssembly().GetName().ToString() Który drukuje następujące: Revision …
Chcę pobrać listę kolumn w tabeli. Baza danych jest najnowszą wersją SQLite (wydaje mi się, że 3.6). Szukam kodu, który robi to za pomocą zapytania SQL. Dodatkowe punkty bonusowe za metadane związane z kolumnami (np. Długość, typ danych itp.)
Łańcuch operacji „instanceof” jest uważany za „zapach kodu”. Standardowa odpowiedź brzmi „użyj polimorfizmu”. Jak bym to zrobił w tym przypadku? Istnieje wiele podklas klasy bazowej; żaden z nich nie jest pod moją kontrolą. Analogiczna sytuacja miałaby miejsce w przypadku klas Java Integer, Double, BigDecimal itp. if (obj instanceof Integer) {NumberStuff.handle((Integer)obj);} …
W Javie, jakie zalety / wady istnieją wokół wyboru użycia a.getClass()lub A.class? Każda z nich może być używana wszędzie tam, gdzie Class<?>jest oczekiwane, ale wyobrażam sobie, że użycie obu w różnych okolicznościach przyniosłoby wydajność lub inne subtelne korzyści (tak jak w przypadku Class.forName()i ClassLoader.loadClass().
Czy w przypadku danej funkcji można uzyskać jej nazwę? Mówić: func foo() { } func GetFunctionName(i interface{}) string { // ... } func main() { // Will print "name: foo" fmt.Println("name:", GetFunctionName(foo)) } Powiedziano mi, że runtime.FuncForPC może pomóc, ale nie rozumiałem, jak go używać.
Używam anonimowego obiektu, aby przekazać moje atrybuty HTML do niektórych metod pomocniczych. Jeśli konsument nie dodał atrybutu identyfikatora, chcę dodać go w mojej metodzie pomocniczej. Jak mogę dodać atrybut do tego anonimowego obiektu?
Im więcej poznawałem moc java.lang.reflect.AccessibleObject.setAccessible, tym bardziej jestem zdumiony tym, co on potrafi. Jest to zaadaptowane z mojej odpowiedzi na pytanie ( Używanie odbicia do zmiany statycznego pliku końcowego File.separatorChar do testowania jednostkowego ). import java.lang.reflect.*; public class EverythingIsTrue { static void setFinalStatic(Field field, Object newValue) throws Exception { field.setAccessible(true); …
Biorąc pod uwagę scenariusz, w którym masz funkcję, która akceptuje t interface{}. Jeśli okaże się, że tjest to kawałek, jak mam rangego nadrobić? func main() { data := []string{"one","two","three"} test(data) moredata := []int{1,2,3} test(data) } func test(t interface{}) { switch reflect.TypeOf(t).Kind() { case reflect.Slice: // how do I iterate here? …
Mam klasę: class TestClass def method1 end def method2 end def method3 end end Jak mogę uzyskać listę moich metod w tej klasie ( method1, method2, method3)?
Zakładając następującą hipotetyczną hierarchię dziedziczenia: public interface IA { int ID { get; set; } } public interface IB : IA { string Name { get; set; } } Korzystając z refleksji i wykonując następujące wezwanie: typeof(IB).GetProperties(BindingFlags.Public | BindingFlags.Instance) zwróci tylko właściwości interfejsu IB, którym jest „ Name”. Gdybyśmy mieli …
Próbuję przeskanować zestaw pod kątem typów implementujących określony interfejs przy użyciu kodu podobnego do tego: public List<Type> FindTypesImplementing<T>(string assemblyPath) { var matchingTypes = new List<Type>(); var asm = Assembly.LoadFrom(assemblyPath); foreach (var t in asm.GetTypes()) { if (typeof(T).IsAssignableFrom(t)) matchingTypes.Add(t); } return matchingTypes; } Mój problem polega na tym, że ReflectionTypeLoadExceptionpodczas wywoływania …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.