คำถามติดแท็ก reflection

Reflection เป็นความสามารถของโปรแกรมในการสังเกตและ / หรือปรับเปลี่ยนโครงสร้างและ / หรือพฤติกรรมของมันที่รันไทม์ การสะท้อนแสงขึ้นอยู่กับภาษาการเขียนโปรแกรมที่สนับสนุน - โปรดติดแท็กภาษาการเขียนโปรแกรมที่ใช้เมื่อใช้แท็กนี้

10
การสร้างอินสแตนซ์โดยใช้ชื่อคลาสและตัวสร้างการเรียก
มีวิธีสร้างอินสแตนซ์ของคลาสเฉพาะที่กำหนดชื่อคลาส (ไดนามิก) และส่งพารามิเตอร์ไปยังตัวสร้างหรือไม่ สิ่งที่ต้องการ: Object object = createInstance("mypackage.MyClass","MyAttributeValue"); ที่ไหนเป็นอาร์กิวเมนต์คอนสตรัคของ"MyAttributeValue"MyClass

12
การตั้งค่าคุณสมบัติโดยการสะท้อนกับค่าสตริง
stringฉันต้องการที่จะตั้งค่าคุณสมบัติของวัตถุผ่านสะท้อนที่มีค่าของประเภท ดังนั้นสำหรับตัวอย่างเช่นสมมติว่าฉันมีShipระดับด้วยคุณสมบัติของซึ่งเป็นLatitudedouble นี่คือสิ่งที่ฉันต้องการจะทำ: Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null); เช่นนี้จะพ่นArgumentException: วัตถุประเภท 'System.String' ไม่สามารถแปลงเป็นประเภท 'System.Double' ฉันจะแปลงค่าเป็นประเภทที่เหมาะสมได้propertyInfoอย่างไร

16
ตรวจสอบว่าคลาสนั้นมาจากคลาสทั่วไปหรือไม่
ฉันมีชั้นเรียนทั่วไปในโครงการของฉันกับชั้นเรียนที่ได้รับ public class GenericClass<T> : GenericInterface<T> { } public class Test : GenericClass<SomeType> { } มีวิธีใดบ้างที่จะทราบว่าTypeวัตถุนั้นได้มาจากGenericClassอะไร? t.IsSubclassOf(typeof(GenericClass<>)) ไม่ทำงาน, ไม่เป็นผล.
309 c#  generics  reflection 

21
จะทราบได้อย่างไรว่ามีการกำหนดฟังก์ชัน JavaScript หรือไม่
คุณจะทราบได้อย่างไรว่ามีการกำหนดฟังก์ชันใน JavaScript หรือไม่ ฉันต้องการทำอะไรแบบนี้ function something_cool(text, callback) { alert(text); if( callback != null ) callback(); } แต่มันทำให้ฉันได้รับ โทรกลับไม่ใช่ฟังก์ชั่น ข้อผิดพลาดเมื่อไม่ได้กำหนดโทรกลับ

6
Convert.ChangeType () ล้มเหลวใน Nullable Types
ฉันต้องการแปลงสตริงเป็นค่าคุณสมบัติวัตถุที่ชื่อฉันมีเป็นสตริง ฉันพยายามทำเช่นนี้: string modelProperty = "Some Property Name"; string value = "SomeValue"; var property = entity.GetType().GetProperty(modelProperty); if (property != null) { property.SetValue(entity, Convert.ChangeType(value, property.PropertyType), null); } ปัญหาคือว่านี่คือความล้มเหลวและการโยนการยกเว้นการโยนไม่ถูกต้องเมื่อประเภทคุณสมบัติเป็นประเภทที่ไม่สามารถใช้ได้ นี่ไม่ใช่กรณีของค่าที่ไม่สามารถแปลงได้ - จะใช้งานได้หากฉันทำด้วยตนเอง (เช่นDateTime? d = Convert.ToDateTime(value);) ฉันเคยเห็นคำถามที่คล้ายกัน แต่ยังไม่สามารถใช้งานได้
301 c#  .net  reflection 

11
ฉันจะรับรายการคลาสทั้งหมดภายในโมดูลปัจจุบันใน Python ได้อย่างไร
ฉันเห็นตัวอย่างมากมายของผู้ที่ดึงคลาสทั้งหมดออกจากโมดูลซึ่งมักจะเป็นสิ่งที่ชอบ: # foo.py class Foo: pass # test.py import inspect import foo for name, obj in inspect.getmembers(foo): if inspect.isclass(obj): print obj น่ากลัว แต่ฉันไม่สามารถหาวิธีรับคลาสทั้งหมดจากโมดูลปัจจุบัน # foo.py import inspect class Foo: pass def print_classes(): for name, obj in inspect.getmembers(???): # what do I do here? if inspect.isclass(obj): print obj # test.py import …

30
วิธีรับชื่อฟังก์ชัน / ค่าพารามิเตอร์แบบไดนามิก?
มีวิธีรับชื่อพารามิเตอร์ฟังก์ชั่นของฟังก์ชั่นแบบไดนามิกหรือไม่? สมมติว่าฟังก์ชั่นของฉันเป็นแบบนี้ function doSomething(param1, param2, .... paramN){ // fill an array with the parameter name and value // some other code } ทีนี้ฉันจะดูรายการชื่อพารามิเตอร์และค่าของมันลงในอาร์เรย์จากภายในฟังก์ชันได้อย่างไร



28
ฉันจะเพิ่มการสะท้อนกลับไปยังแอปพลิเคชัน C ++ ได้อย่างไร
ฉันต้องการที่จะสามารถตรวจสอบคลาส C ++ สำหรับชื่อเนื้อหา (เช่นสมาชิกและประเภทของพวกเขา) ฯลฯ ฉันกำลังพูดภาษา C ++ ที่นี่ไม่ใช่จัดการ C ++ ซึ่งมีการสะท้อนกลับ ฉันรู้ว่า C ++ ให้ข้อมูลที่ จำกัด โดยใช้ RTTI ห้องสมุดเพิ่มเติมใด (หรือเทคนิคอื่น ๆ ) สามารถให้ข้อมูลนี้ได้บ้าง?

14
Reflection - รับชื่อคุณลักษณะและค่าของคุณสมบัติ
ฉันมีชั้นเรียนให้เรียกมันว่าจองด้วยคุณสมบัติที่เรียกว่าชื่อ ด้วยคุณสมบัตินั้นฉันมีแอตทริบิวต์ที่เกี่ยวข้อง public class Book { [Author("AuthorName")] public string Name { get; private set; } } ในวิธีการหลักของฉันฉันใช้การไตร่ตรองและต้องการรับคู่ค่าคีย์ของแต่ละแอตทริบิวต์สำหรับแต่ละคุณสมบัติ ดังนั้นในตัวอย่างนี้ฉันคาดว่าจะเห็น "ผู้เขียน" สำหรับชื่อแอตทริบิวต์และ "ชื่อผู้ใช้" สำหรับค่าแอตทริบิวต์ คำถาม: ฉันจะรับชื่อคุณลักษณะและค่าของคุณสมบัติของฉันโดยใช้ Reflection ได้อย่างไร

9
จะตรวจสอบว่าตัวแปรเป็นคลาสได้หรือไม่?
ฉันสงสัยว่าจะตรวจสอบได้อย่างไรว่าตัวแปรเป็นคลาส (ไม่ใช่อินสแตนซ์!) หรือไม่ ฉันพยายามใช้ฟังก์ชั่นisinstance(object, class_or_type_or_tuple)การทำเช่นนี้ แต่ฉันไม่ทราบว่าชั้นเรียนจะมีประเภทใด ตัวอย่างเช่นในรหัสต่อไปนี้ class Foo: pass isinstance(Foo, **???**) # i want to make this return True. ฉันพยายามแทนที่ " class" ด้วย??? แต่ฉันรู้ว่าclassเป็นคำหลักในหลาม
236 python  reflection 

5
ใช้ isKindOfClass กับ Swift
ฉันพยายามรับ Swift lang และฉันสงสัยว่าจะแปลง Objective-C ต่อไปนี้เป็น Swift ได้อย่างไร: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; UITouch *touch = [touches anyObject]; if ([touch.view isKindOfClass: UIPickerView.class]) { //your touch was in a uipickerview ... do whatever you have to do } } โดยเฉพาะอย่างยิ่งฉันจำเป็นต้องรู้วิธีใช้isKindOfClassในไวยากรณ์ใหม่ override func touchesBegan(touches: NSSet, withEvent event: UIEvent) …

10
ค้นหาฟิลด์ส่วนตัวด้วยรีเฟลคชั่น
รับคลาสนี้ class Foo { // Want to find _bar with reflection [SomeAttribute] private string _bar; public string BigBar { get { return this._bar; } } } ฉันต้องการค้นหารายการส่วนตัว _bar ที่ฉันจะทำเครื่องหมายด้วยแอตทริบิวต์ เป็นไปได้ไหม ฉันทำสิ่งนี้ด้วยคุณสมบัติที่ฉันได้ค้นหาแอ็ตทริบิวต์ แต่ไม่เคยมีเขตข้อมูลส่วนตัว การตั้งค่าสถานะการเชื่อมโยงใดที่ฉันต้องตั้งค่าเพื่อรับฟิลด์ส่วนตัว

12
วิธีการตรวจสอบว่าชนิดที่ใช้ประเภทอินเตอร์เฟสทั่วไปที่เฉพาะเจาะจง
สมมติคำจำกัดความประเภทต่อไปนี้: public interface IFoo<T> : IBar<T> {} public class Foo<T> : IFoo<T> {} ฉันจะทราบได้อย่างไรว่าประเภทนั้นFooใช้อินเทอร์เฟซทั่วไปIBar<T>เมื่อมีชนิด mangled เท่านั้นที่ใช้ได้
226 c#  .net  reflection 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.