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

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


30
วิธีการสร้างอาร์เรย์ทั่วไปใน Java?
เนื่องจากการใช้งานจาวา generics คุณไม่สามารถมีรหัสเช่นนี้: public class GenSet<E> { private E a[]; public GenSet() { a = new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation } } ฉันจะใช้สิ่งนี้ในขณะที่รักษาความปลอดภัยประเภทได้อย่างไร ฉันเห็นวิธีแก้ไขปัญหาในฟอรัม Java ที่เป็นเช่นนี้: import java.lang.reflect.Array; class Stack<T> { public Stack(Class<T> clazz, int capacity) { array = (T[])Array.newInstance(clazz, capacity); } private final T[] array; } แต่ฉันไม่เข้าใจว่าเกิดอะไรขึ้น

8
ฉันจะใช้การสะท้อนเพื่อเรียกใช้วิธีการทั่วไปได้อย่างไร
อะไรคือวิธีที่ดีที่สุดในการเรียกใช้เมธอดทั่วไปเมื่อไม่รู้จักพารามิเตอร์ชนิดในเวลารวบรวม แต่จะได้รับแบบไดนามิก ณ รันไทม์ ลองพิจารณาโค้ดตัวอย่างต่อไปนี้ - ภายในExample()เมธอดวิธีที่กระชับที่สุดในการเรียกGenericMethod<T>()ใช้โดยTypeเก็บในmyTypeตัวแปรคืออะไร? public class Sample { public void Example(string typeName) { Type myType = FindType(typeName); // What goes here to call GenericMethod<T>()? GenericMethod<myType>(); // This doesn't work // What changes to call StaticMethod<T>()? Sample.StaticMethod<myType>(); // This also doesn't work } public void GenericMethod<T>() { // …
1070 c#  .net  generics  reflection 

22
รับค่าคุณสมบัติจากสตริงโดยใช้การสะท้อนใน C #
ฉันพยายามใช้การแปลงข้อมูลโดยใช้ตัวอย่างReflection 1ในรหัสของฉัน GetSourceValueฟังก์ชั่นที่มีสวิทช์เปรียบเทียบหลากหลายชนิด แต่ฉันต้องการที่จะลบประเภทนี้และคุณสมบัติและมีการGetSourceValueรับค่าของทรัพย์สินที่ใช้เพียงสายเดียวที่เป็นพารามิเตอร์ ฉันต้องการส่งคลาสและคุณสมบัติในสตริงและแก้ไขค่าของคุณสมบัติ เป็นไปได้ไหม 1 Web Archive โพสต์บล็อกดั้งเดิม

28
ฉันจะได้รับเส้นทางของการชุมนุมรหัสอยู่ใน?
มีวิธีที่จะได้รับเส้นทางสำหรับการชุมนุมที่รหัสปัจจุบันอยู่หรือไม่? ฉันไม่ต้องการเส้นทางของชุดการโทรเพียงอันเดียวที่มีรหัส โดยทั่วไปการทดสอบหน่วยของฉันต้องอ่านไฟล์ทดสอบ xml บางไฟล์ซึ่งตั้งอยู่สัมพันธ์กับ dll ฉันต้องการเส้นทางที่จะแก้ไขอย่างถูกต้องเสมอโดยไม่คำนึงถึงว่า dll การทดสอบรันจาก TestDriven.NET, MbUnit GUI หรืออย่างอื่น แก้ไข : ผู้คนดูเหมือนจะเข้าใจผิดในสิ่งที่ฉันขอ ห้องสมุดทดสอบของฉันตั้งอยู่ในคำพูด C: \ โครงการ \ MyApplication \ daotests \ bin \ Debug \ daotests.dll และฉันต้องการเส้นทางนี้: C: \ โครงการ \ MyApplication \ daotests \ bin \ Debug \ ข้อเสนอแนะสามข้อที่ทำให้ฉันล้มเหลวเมื่อฉันเรียกใช้จาก MbUnit Gui: Environment.CurrentDirectory ให้c: \ Program …
781 c#  .net  reflection  mbunit 

12
วิธีสร้างอินสแตนซ์วัตถุใหม่จากประเภท
หนึ่งอาจจะไม่เคยรู้Typeของวัตถุที่รวบรวมเวลา Typeแต่อาจจำเป็นต้องสร้างอินสแตนซ์ที่ คุณจะรับอินสแตนซ์ของวัตถุใหม่ได้Typeอย่างไร

21
ฉันจะเรียกใช้วิธีการ Java ได้อย่างไรเมื่อกำหนดชื่อวิธีเป็นสตริง?
ถ้าฉันมีตัวแปรสองตัว: Object obj; String methodName = "getName"; objฉันจะเรียกวิธีการที่ระบุโดยmethodNameบนคลาสได้อย่างไร? วิธีการที่ถูกเรียกไม่มีพารามิเตอร์และStringค่าตอบแทน มันทะเยอทะยานสำหรับถั่วจาวา
684 java  reflection  invoke 



14
วิธีการตรวจสอบว่าชนิดที่ใช้อินเทอร์เฟซกับ C # สะท้อน
ไม่สะท้อนในC#ทางที่เป็นข้อเสนอเพื่อตรวจสอบว่าได้รับบางSystem.Typeรุ่นประเภทอินเตอร์เฟซบางอย่าง? public interface IMyInterface {} public class MyType : IMyInterface {} // should yield 'true' typeof(MyType)./* ????? */MODELS_INTERFACE(IMyInterface);
562 c#  reflection  interface 

16
รับทุกประเภทที่ใช้อินเตอร์เฟส
ใช้การไตร่ตรองฉันจะทำให้ทุกประเภทที่ใช้อินเทอร์เฟซกับ C # 3.0 / .NET 3.5 มีโค้ดน้อยที่สุดและลดการทำซ้ำให้น้อยที่สุดได้อย่างไร นี่คือสิ่งที่ฉันต้องการเขียนใหม่: foreach (Type t in this.GetType().Assembly.GetTypes()) if (t is IMyInterface) ; //do stuff

27
คุณสามารถค้นหาคลาสทั้งหมดในแพ็คเกจโดยใช้การสะท้อนได้หรือไม่?
เป็นไปได้หรือไม่ที่จะหาคลาสหรืออินเตอร์เฟสทั้งหมดในแพ็คเกจที่กำหนด? (ดูอย่างรวดเร็วเช่นPackageมันจะดูเหมือนไม่.)

14
เทียบเท่าโปรแกรมโดยค่าเริ่มต้น (ประเภท)
ฉันใช้การไตร่ตรองเพื่อวนรอบTypeคุณสมบัติของและตั้งค่าบางประเภทเป็นค่าเริ่มต้น ตอนนี้ฉันสามารถสลับกับชนิดและตั้งค่าได้default(Type)อย่างชัดเจน แต่ฉันควรทำในบรรทัดเดียว มีค่าเริ่มต้นเทียบเท่าโปรแกรมหรือไม่
514 c#  reflection  default 

25
รับประเภททั่วไปของคลาสที่รันไทม์
ฉันจะบรรลุสิ่งนี้ได้อย่างไร public class GenericClass<T> { public Type getMyType() { //How do I return the type of T? } } ทุกสิ่งที่ฉันได้ลองมาแล้วจะส่งคืนประเภทเสมอObjectมากกว่าประเภทเฉพาะที่ใช้

23
รับคุณลักษณะของค่าของ Enum
ฉันต้องการทราบว่าเป็นไปได้ไหมที่จะรับคุณลักษณะของenumค่าและไม่ใช่ของenumตัวเอง? ตัวอย่างเช่นสมมติว่าฉันมีสิ่งต่อไปนี้enum: using System.ComponentModel; // for DescriptionAttribute enum FunkyAttributesEnum { [Description("Name With Spaces1")] NameWithoutSpaces1, [Description("Name With Spaces2")] NameWithoutSpaces2 } สิ่งที่ฉันต้องการคือประเภท enum สร้าง 2-tuples ของค่า enum string และคำอธิบาย คุณค่านั้นง่าย: Array values = System.Enum.GetValues(typeof(FunkyAttributesEnum)); foreach (int value in values) Tuple.Value = Enum.GetName(typeof(FunkyAttributesEnum), value); แต่ฉันจะรับค่าคุณลักษณะของคำอธิบายเพื่อเติมได้Tuple.Descอย่างไร ฉันสามารถคิดวิธีที่จะทำถ้าแอตทริบิวต์เป็นของenumตัวเอง enumแต่ฉันที่สูญเสียเป็นวิธีการที่จะได้รับจากค่าของ

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