javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

git

.net

ios

ruby-on-rails

sql

c

string

ruby

CodeGo.net>如何检查属性设置器是否公开

给定一个PropertyInfo对象,我如何检查该属性的设置器是公共的?

trans by 2019-11-15T03:50:38Z

反射-C#:如何获取类型的所有公共(获取和设置)字符串属性

我正在尝试制作一种方法,该方法将遍历通用对象列表,并将其所有类型为set的属性替换为null或将其替换为空。

如何做到这一点的好方法?

到目前为止,我有这种外壳...

public static void ReplaceEmptyStrings<T>(List<T> list, string replacement)
{
    var properties = typeof(T).GetProperties( -- What BindingFlags? -- );

    foreach(var p in properties)
    {
        foreach(var item in list)
        {
            if(string.IsNullOrEmpty((string) p.GetValue(item, null)))
                p.SetValue(item, replacement, null);
        }
    }
}

因此,如何找到类型的所有属性:

  • 类型set
  • 公开set
  • 公开set


我做了这个测试课:

class TestSubject
{
    public string Public;
    private string Private;

    public string PublicPublic { get; set; }
    public string PublicPrivate { get; private set; }
    public string PrivatePublic { private get; set; }
    private string PrivatePrivate { get; set; }
}

以下内容不起作用:

var properties = typeof(TestSubject)
        .GetProperties(BindingFlags.Instance|BindingFlags.Public)
        .Where(ø => ø.CanRead && ø.CanWrite)
        .Where(ø => ø.PropertyType == typeof(string));

如果我打印出到达那里的那些属性的名称,则会得到:

公共公共公共私人私人公共

换句话说,我得到了两个属性太多。


注意:这可能是更好的方法...使用嵌套的foreach和反射以及所有这些方法在这里...但是,如果您有其他很好的选择,请让我知道,因为我想学习!

trans by 2019-11-14T23:42:09Z

PHP 5 Reflection API性能

我目前正在考虑在自己的MVC Web框架中使用Reflection类(主要是ReflectionionClass和ReflectionMethod),因为我需要自动实例化控制器类并调用它们的方法而无需任何必需的配置(“约定之上的配置”方法)。

我担心性能,尽管我认为数据库请求可能比实际的PHP代码更大的瓶颈。

因此,我想知道从性能角度看,是否有人对PHP 5 Reflection有任何好的或坏的经验。

此外,我很想知道是否有一种流行的PHP框架(CI,Cake,Symfony等)实际上使用了反射。

trans by 2019-11-13T15:57:00Z

为什么在.NET中建议使用反射?

使用它绝对是个好习惯吗?

项目中有哪些可能的情况需要反思?

trans by 2019-11-12T05:09:31Z

检测是否使用反射(C#)覆盖了方法

假设我有一个基类TestBase,其中定义了一个虚拟方法TestMe()

class TestBase
{
    public virtual bool TestMe() {  }
}

现在,我继承该类:

class Test1 : TestBase
{
    public override bool TestMe() {}
}

现在,使用反射,我需要确定子类中的Test方法是否已被覆盖-可以吗?

我需要什么-我正在为“对象”类型编写一个设计器可视化程序,以显示继承的整个层次结构,并还显示哪些虚拟方法在哪个级别被覆盖。

trans by 2019-11-11T15:20:18Z

首页> C#>使用IsAssignableFrom与“开放”的泛型类型

使用反射,我试图找到从给定基类继承的一组类型。 不需要很长时间就可以找到简单类型,但是对于泛型我感到很困惑。

对于这段代码,第一个IsAssignableFrom返回true,但是第二个返回false。 但是,最终的任务编译就可以了。

class class1 { }
class class2 : class1 { }
class generic1<T> { }
class generic2<T> : generic1<T> { }

class Program
{
    static void Main(string[] args)
    {
        Type c1 = typeof(class1);
        Type c2 = typeof(class2);
        Console.WriteLine("c1.IsAssignableFrom(c2): {0}", c1.IsAssignableFrom(c2));

        Type g1 = typeof(generic1<>);
        Type g2 = typeof(generic2<>);
        Console.WriteLine("g1.IsAssignableFrom(g2): {0}", g1.IsAssignableFrom(g2));

        generic1<class1> cc = new generic2<class1>();
    }
}

那么,如何在运行时确定一个泛型类型定义是否派生自另一个泛型类型定义?

trans by 2019-11-11T05:26:01Z

java-如何获取成员变量的注释?

我想知道一个类的某些成员变量的注释,我使用type.getAnnotations()进行一个类的内省,并使用type.getDeclaredAnnotations()查找特定的属性,并使用Class type = propertyDescriptor.getPropertyType()获得该属性的Class。

但是我不知道如何将注释添加到成员变量中?

我尝试了type.getAnnotations()和26081738715137320320,但是都返回了Class的注释,而不是我想要的。 例如 :

class User 
{
  @Id
  private Long id;

  @Column(name="ADDRESS_ID")
  private Address address;

  // getters , setters
}

@Entity
@Table(name = "Address")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
class Address 
{
  ...
}

我想获取地址的注释:@Column,而不是类地址的注释(@Entity,@Table,@Cache)。 如何实现呢? 谢谢。

trans by 2019-11-10T14:43:33Z

Java如何通过以原始类型作为参数的反射来调用方法

我在类中有以下两种方法:

public void Test(int i){
    System.out.println("1");
}
public void Test(Integer i){
    System.out.println("2");
}

下面的代码行

this.getClass().getMethod("Test",Integer.class).invoke(this, 10);

打印2,如何使其打印1

trans by 2019-11-10T09:12:16Z

反射-从C#中的基类,获取派生类型?

假设我们有以下两个类:

public class Derived : Base
{
    public Derived(string s)
        : base(s)
    { }
}

public class Base
{
    protected Base(string s)
    {

    }
}

如何从typeof(Derived)的构造函数中找出Base是调用者? 这是我想出的:

public class Derived : Base
{
    public Derived(string s)
        : base(typeof(Derived), s)
    { }
}

public class Base
{
    protected Base(Type type, string s)
    {

    }
}

是否存在另一种不需要传递typeof(Derived)的方法,例如某种使用Base的构造函数中的反射的方法?

trans by 2019-11-10T04:54:09Z

首页> C#>如何获得我的自定义属性应用到的成员?

我正在C#中创建自定义属性,并且我想根据该属性是否应用于方法还是属性来做不同的事情。 最初,我将在自定义属性构造函数中执行new StackTrace().GetFrame(1).GetMethod(),以查看称为属性构造函数的方法,但是现在我不确定会给我带来什么。 如果将属性应用于属性怎么办? GetMethod()是否会为该属性返回MethodBase实例? 是否有另一种方法来获取在C#中应用了属性的成员?

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property,
    AllowMultiple = true)]
public class MyCustomAttribute : Attribute

更新:好的,我可能一直在问错问题。 从自定义属性类中,如何获取自定义属性应用到的成员(或包含该成员的类)? Aaronaught建议不要在堆栈上查找要应用我的属性的类成员,但是我又如何从我的属性的构造函数中获取此信息呢?

trans by 2019-11-10T03:34:19Z

.net-您可以从MethodInfo对象中获得Func <T>(或类似功能)吗?

我意识到,一般而言,使用反射会带来性能影响。 (实际上,我本人一点也不喜欢思考;这是一个纯粹的学术问题。)

假设存在一些看起来像这样的类:

public class MyClass {
    public string GetName() {
        return "My Name";
    }
}

在这里忍受我。 我知道,如果我有一个MethodInfo实例称为Func<string>,则可以调用getName.GetParameters().Length == 0。此外,我可以将getName变量设置为Func<string>

现在这是我的问题。 假设我不知道上面的类称为MethodInfo; 我有一些对象Func<string>,但我不知道它是什么。 我可以通过执行以下操作来检查该对象是否具有getName.GetParameters().Length == 0方法:

MethodInfo getName = x.GetType().GetMethod("GetName");

假设MethodInfo不为null。 然后,我无法进一步检查Func<string>getName.GetParameters().Length == 0,在这一点上,我不确定我的getName对象所代表的方法是否可以肯定地转换为Func<string>,这是为什么?

我意识到这里有MethodInfo,而且我也总是可以创建一个Func<string>,例如:

Func<string> getNameFunc = () => getName.Invoke(x, null);

我想我要问的是,是否有任何方法可以将MethodInfo对象转换为它表示的实际方法,这会导致过程中反射的性能损失,但是在那之后便可以直接调用该方法(例如,通过 ,Func<string>或类似内容),而不会降低性能。

我所设想的可能看起来像这样:

// obviously this would throw an exception if GetActualInstanceMethod returned
// something that couldn't be cast to a Func<string>
Func<string> getNameFunc = (Func<string>)getName.GetActualInstanceMethod(x);

(我意识到那不存在;我想知道是否有类似的东西。)

trans by 2019-11-09T16:32:42Z

CodeGo.net>如何从基类中找到子类名称?

base class内部的run-time,如何查找当前子类名称?

trans by 2019-11-09T11:39:41Z

如何使用反射(Java)调用私有静态方法?

我想调用一个私有的静态方法。 我有名字 我听说可以使用Java反射机制来完成。 我该怎么做?

编辑:我在尝试调用该方法时遇到的一个问题是如何指定其参数的类型。 我的方法收到一个参数,其类型为Map。 因此,我无法执行Map<User, String>.TYPE(在运行时,由于Java Type擦除,没有Map之类的东西)。 还有另一种方法来获取该方法吗?

trans by 2019-11-08T18:30:42Z

检索方法中的调用方法名称

可能重复:
如何找到调用当前方法的方法?

我在对象中有一个方法,可以从对象中的许多地方调用该方法。 有没有一种快速简便的方法来获取称为此流行方法的方法的名称。

伪代码示例:

public Main()
{
     PopularMethod();
}

public ButtonClick(object sender, EventArgs e)
{
     PopularMethod();
}

public Button2Click(object sender, EventArgs e)
{
     PopularMethod();
}

public void PopularMethod()
{
     //Get calling method name
}

PopularMethod()中,如果要从StackTrace调用它,我希望看到System.Reflection.MethodBase.GetCurrentMethod()的值...如果要从PopularMethod()调用PopularMethod(),我希望看到“ ButtonClick

我一直在查看System.Reflection.MethodBase.GetCurrentMethod(),但这无法获取调用方法。 我已经看过了StackTrace类,但我确实不喜欢每次调用该方法都运行整个堆栈跟踪。

trans by 2019-11-08T17:57:03Z

反射-Java类是否可以在运行时为其自身添加方法?

类是否可以在运行时向其自身添加方法(例如从doAction()块),这样,如果有人对此类进行反射,即使未在编译时定义该方法,他们也会看到新方法?

背景:

按照惯例,我使用的框架预期将定义具有doAction(...)方法的doAction()类。 框架在运行时检查这些类,以查看其doAction()方法中可用的参数类型。 例如:doAction(String a,Integer b)

我希望每个类都能够以编程方式生成带有各种参数的doAction()方法,并在检查时及时生成。 方法的主体可以为空。

trans by 2019-11-07T21:48:35Z

反射-重建/获取php函数代码

我可以通过编程获得名称的功能代码吗?

喜欢:

function blah($a, $b) { return $a*$b; }
echo getFunctionCode("blah");

可能吗?

是否有任何PHP自描述函数来重构函数/类代码?
(意味着不要从源文件中正确获取源代码)

在Java中,存在:[http://java.sun.com/developer/technicalArticles/ALT/Reflection/]

在PHP中:
get_class_methods()
类型
ReflectionFunction(感谢Alin Purcaru)

trans by 2019-11-06T22:31:44Z

c#-在所有程序集中查找类型

我需要在网站或Windows应用程序的所有程序集中查找特定类型,有没有简便的方法? 就像ASP.NET MVC的控制器工厂在控制器的所有程序集中的外观一样。

谢谢。

trans by 2019-11-06T17:38:37Z

CodeGo.net>如何将字符串转换为任何类型

我想将字符串转换为通用类型

我有这个:

string inputValue = myTxtBox.Text;    

PropertyInfo propInfo = typeof(MyClass).GetProperty(myPropertyName);
Type propType = propInfo.PropertyType;

object propValue = ?????

我想将“ inputString”转换为该属性的类型,以检查其是否兼容我怎样才能做到这一点?

ks

trans by 2019-11-06T06:39:42Z

.net-如何读取程序集属性

在我的程序中,如何读取AssemblyInfo.cs中设置的属性:

[assembly: AssemblyTitle("My Product")]
[assembly: AssemblyDescription("...")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Radeldudel inc.")]
[assembly: AssemblyProduct("My Product")]
[assembly: AssemblyCopyright("Copyright @ me 2008")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

我想向我的程序用户显示其中一些值,所以我想知道如何从主程序和我正在使用的komponent程序集中加载它们。

trans by 2019-11-06T01:15:12Z

c#-在.NET Reflection中将GetProperties()与BindingFlags.DeclaredOnly一起使用

如果我用

sometype.GetProperties();

我从类型中获取所有属性,并且它是父属性。 但是,我只想检索以这种类型显式定义的属性(而不是父级)。 我认为这就是BindingFlags.DeclaredOnly选项的用途。

但是,当我尝试这样做时:

sometype.GetProperties(BindingFlags.DeclaredOnly);

我得到0个属性。

有人知道我在做什么错吗?

trans by 2019-11-04T04:38:42Z

1 2 3 4 5 6 7 8 9 下一页 共9页