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.
Weź następującą klasę jako przykład: class Sometype { int someValue; public Sometype(int someValue) { this.someValue = someValue; } } Następnie chcę utworzyć instancję tego typu za pomocą odbicia: Type t = typeof(Sometype); object o = Activator.CreateInstance(t); Zwykle to zadziała, jednak ponieważ SomeTypenie zdefiniowano konstruktora bez parametrów, wywołanie Activator.CreateInstancewyrzuci wyjątek typu …
User u = new User(); Type t = typeof(User); u is User -> returns true u is t -> compilation error Jak sprawdzić, czy jakaś zmienna jest tego typu?
Czy Stringw Javie istnieje mechanizm zastępujący, w którym mogę przekazywać obiekty tekstem i zastępuje ciąg, gdy się pojawia. Na przykład tekst to: Hello ${user.name}, Welcome to ${site.name}. Obiekty, które mam, to "user"i "site". Chcę zamienić ciągi podane w środku na ${}ich odpowiedniki z obiektów. To samo, co zamieniamy obiekty w …
Czy można utworzyć instancję klasy według nazwy? Coś jak: NSString* className = @"Car"; id* p = [Magic createClassByName:className]; [p turnOnEngine]; Nie wiem, czy jest to możliwe w celu-c, ale wygląda na to, że tak byłoby,
Muszę przeczytać klasy zawarte w pakiecie Java. Te klasy znajdują się w ścieżce klas. Muszę wykonać to zadanie bezpośrednio z programu Java. Czy znasz prosty sposób? List<Class> classes = readClassesFrom("my.package")
Mogę zrobić eval("something()"); wykonać kod dynamicznie w JavaScript. Czy istnieje sposób, aby zrobić to samo w C #? Przykładem tego, co próbuję zrobić, jest: Mam zmienną całkowitą (powiedzmy i) i mam wiele właściwości o nazwach: „Właściwość1”, „Właściwość2”, „Właściwość3” itd. Teraz chcę wykonać kilka operacji na właściwości „Property i ” w …
Powiedzmy, że mam bardzo prosty obiekt Java, który ma tylko niektóre właściwości getXXX i setXXX. Ten obiekt jest używany tylko do obsługi wartości, w zasadzie rekordu lub bezpiecznej dla typu (i wydajnej) mapy. Często muszę ukrywać ten obiekt w parach klucz-wartość (ciągi znaków lub typ bezpieczny) lub konwertować z par …
W Javie privatemodyfikator dostępu uważa się za bezpieczny, ponieważ nie jest widoczny poza klasą. Wtedy świat zewnętrzny również nie wie o tej metodzie. Ale pomyślałem, że odbicie w Javie może użyć do złamania tej reguły. Rozważ następujący przypadek: public class ProtectedPrivacy{ private String getInfo(){ return "confidential"; } } Teraz z …
Mam Classprzedmiot. Chcę ustalić, czy typ, który Classreprezentuje obiekt, implementuje określony interfejs. Zastanawiałem się, jak można to osiągnąć? Mam następujący kod. Zasadniczo pobiera tablicę wszystkich klas w określonym pakiecie. Następnie chcę przejść przez tablicę i dodać obiekty Class, które implementują interfejs do mojej mapy. Problem polega na tym, że isInstance()przyjmuje …
Próbuję dowiedzieć się, jak można przejść do importowania i używania .dll w czasie wykonywania wewnątrz aplikacji C #. Używając Assembly.LoadFile () udało mi się zmusić mój program do załadowania biblioteki dll (ta część zdecydowanie działa, ponieważ jestem w stanie uzyskać nazwę klasy za pomocą ToString ()), jednak nie mogę użyć …
Chcę to zrobić w C #, ale nie wiem jak: Mam ciąg z nazwą klasy -eg: FooClassi chcę wywołać metodę (statyczną) w tej klasie: FooClass.MyMethod(); Oczywiście muszę znaleźć odniesienie do klasy poprzez refleksję, ale jak?
Czy jest jakiś elegancki, szybki sposób mapowania obiektu do słownika i odwrotnie? Przykład: IDictionary<string,object> a = new Dictionary<string,object>(); a["Id"]=1; a["Name"]="Ahmad"; // ..... staje się SomeClass b = new SomeClass(); b.Id=1; b.Name="Ahmad"; // ..........
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.