Questions tagged «reflection»

反射是程序在运行时观察和/或修改其结构和/或行为的能力。反射取决于支持的编程语言-请在使用此标记时标记正在使用的编程语言。

3
在运行时动态添加C#属性
我知道有一些问题可以解决这个问题,但是答案通常遵循推荐字典或参数集合的方式,在我的情况下不起作用。 我正在使用通过反射工作的库,以对具有属性的对象进行许多巧妙的操作。这适用于定义的类以及动态类。我需要进一步迈出一步,并按照以下方针做点事情: public static object GetDynamicObject(Dictionary<string,object> properties) { var myObject = new object(); foreach (var property in properties) { //This next line obviously doesn't work... myObject.AddProperty(property.Key,property.Value); } return myObject; } public void Main() { var properties = new Dictionary<string,object>(); properties.Add("Property1",aCustomClassInstance); properties.Add("Property2","TestString2"); var myObject = GetDynamicObject(properties); //Then use them like this …

4
C#中的System.Type和System.RuntimeType有什么区别?
我今天尝试进行一些常规测试,并Assembly.GetTypes()偶然发现某些东西时,通过调用来获取程序集中的所有类型: System.RuntimeType:[First.Namespace.FirstClass] 每当我尝试将该类型与进行比较时typeof(FirstClass),它们都不相等。因此,当我尝试查找包含FirstClass为通用参数的所有类型时,没有找到任何类型。 System.RuntimeType和之间有什么区别System.Type? 有什么办法可以解决我的问题?
89 c#  reflection 



12
如何找出ArrayList <Object>中每个对象的类型?
我有一个由从数据库导入的不同元素组成的ArrayList,它由字符串,数字,双精度数和整数组成。有没有一种方法可以使用反射类型技术来找出每个元素持有的每种数据类型? 仅供参考:数据类型如此之多的原因是,这是一段要编写的Java代码,可以通过不同的DB来实现。

7
Java中是否有类似于instanceOf(Class <?> c)的东西?
我想检查一个对象o是否是类的实例C或的子类C。 例如,如果pis是类,Point我想x.instanceOf(Point.class)成为true并且也要x.instanceOf(Object.class)成为true。 我希望它也适用于装箱的原始类型。例如,如果x是Integer那么x.instanceOf(Integer.class)应该是true。 有这样的事吗?如果没有,如何实现这种方法?

6
在不同的程序集中从类名解析类型
我有一种方法需要解析类的类型。此类存在于另一个程序集中,其名称空间类似于: MyProject.Domain.Model 我正在尝试执行以下操作: Type.GetType("MyProject.Domain.Model." + myClassName); 如果执行此操作的代码与我要解析其类型的类在同一程序集中,则此方法非常有用,但是,如果我的类在其他程序集中,则此代码将失败。 我确信有更好的方法可以完成此任务,但是我在解析程序集和遍历名称空间以解决我要查找的类的类型方面没有很多经验。有什么建议或提示可以更优雅地完成此任务吗?
87 c#  .net  reflection 


6
通过反射查找可为空的属性的类型
我通过反射检查对象的属性,然后继续处理每个属性的数据类型。这是我的(精简版)资源: private void ExamineObject(object o) { Type type = default(Type); Type propertyType = default(Type); PropertyInfo[] propertyInfo = null; type = o.GetType(); propertyInfo = type.GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); // Loop over all properties for (int propertyInfoIndex = 0; propertyInfoIndex &lt;= propertyInfo.Length - 1; propertyInfoIndex++) { propertyType = propertyInfo[propertyInfoIndex].PropertyType; …
83 c#  .net  reflection  nullable 

6
从字符串获取类类型
我有一个String带有类名称的名字"Ex"(无.class扩展名)。我想将其分配给Class变量,如下所示: Class cls = (string).class 我怎样才能做到这一点?
83 java  class  reflection 

6
检查类中是否存在属性
我试着知道一个类中是否存在一个属性,我试了一下: public static bool HasProperty(this object obj, string propertyName) { return obj.GetType().GetProperty(propertyName) != null; } 我不明白为什么第一种测试方法没有通过? [TestMethod] public void Test_HasProperty_True() { var res = typeof(MyClass).HasProperty("Label"); Assert.IsTrue(res); } [TestMethod] public void Test_HasProperty_False() { var res = typeof(MyClass).HasProperty("Lab"); Assert.IsFalse(res); }
82 c#  .net  reflection 

18
通过反射将所有值从一类中的字段复制到另一类中
我有一堂课,基本上是另一堂课的副本。 public class A { int a; String b; } public class CopyA { int a; String b; } 我正在做的是在通过Web服务调用发送之前,将类中的值A放入。现在我想以创建反射方法,其基本上从类副本是相同的(按名称和类型)的所有字段类。CopyACopyAACopyA 我怎样才能做到这一点? 到目前为止,这是我所拥有的,但效果不佳。我认为这里的问题是我试图在要遍历的字段上设置一个字段。 private &lt;T extends Object, Y extends Object&gt; void copyFields(T from, Y too) { Class&lt;? extends Object&gt; fromClass = from.getClass(); Field[] fromFields = fromClass.getDeclaredFields(); Class&lt;? extends Object&gt; tooClass = …
82 java  reflection 

5
正确的方式加载程序集,查找类并调用Run()方法
示例控制台程序。 class Program { static void Main(string[] args) { // ... code to build dll ... not written yet ... Assembly assembly = Assembly.LoadFile(@"C:\dyn.dll"); // don't know what or how to cast here // looking for a better way to do next 3 lines IRunnable r = assembly.CreateInstance("TestRunner"); if (r …
81 c#  .net  reflection 

6
反思“铸造”
考虑以下示例代码: class SampleClass { public long SomeProperty { get; set; } } public void SetValue(SampleClass instance, decimal value) { // value is of type decimal, but is in reality a natural number =&gt; cast instance.SomeProperty = (long)value; } 现在,我需要通过反射来做类似的事情: void SetValue(PropertyInfo info, object instance, object value) { // throws System.ArgumentException: …
81 c#  reflection  casting 

9
使用反射按声明顺序获取属性
我需要按照在类中声明的顺序使用反射来获取所有属性。根据MSDN,使用时无法保证顺序GetProperties() GetProperties方法不会以特定顺序(例如字母顺序或声明顺序)返回属性。 但是我读过,有一种解决方法,即按排序属性MetadataToken。所以我的问题是,这样安全吗?我似乎找不到有关MSDN的任何信息。还是有其他解决方法? 我当前的实现如下所示: var props = typeof(T) .GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) .OrderBy(x =&gt; x.MetadataToken);

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.