本帖最后由 KongHuLu 于 2013-08-01 19:20:22 编辑

解决方案 »

  1.   

    1。可以把type作为参数传进去,比如:
    public class ValidateCodeAttribute : Attribute
    {
    public ValidateCodeAttribute(Type t)
    {
    }
    }2。这种情况下可以不用泛型,把type作为参数,跟上面一样。如果一定要用泛型,可以反射调用:
    MethodInfo method = typeof(xx).GetMethod("MyMethod");
    MethodInfo generic = method.MakeGenericMethod(type);
    generic.Invoke(new xx(), null);
      

  2.   

    通过传入Type不能达到这样的  “MyMethod<这个位置>();”是吗?
    而且不能用where T : ValidateImageBase, new()?
      

  3.   

    通过传入Type不能达到这样的  “MyMethod<这个位置>();”是吗?
    而且不能用where T : ValidateImageBase, new()?
    对的。而且只能反射调用构造函数了。
      

  4.   

    泛型Attribute啊- - 主帖里面说了的
      

  5.   

    泛型Attribute啊- - 主帖里面说了的我的意思是用泛型Attrribute想干嘛?  就是需求要描述清楚
      

  6.   

    我们遇到类似的问题了,我也在找答案呢,我是用反射,但还是觉得麻烦,在找解决方案呢。帮看一下啊。
    http://bbs.csdn.net/topics/390535731
      

  7.   

    通过传入Type不能达到这样的  “MyMethod<这个位置>();”是吗?
    而且不能用where T : ValidateImageBase, new()?
    对的。而且只能反射调用构造函数了。
    这样啊。。0.0
    (ValidateImageBase)instanceType.GetConstructor(System.Type.EmptyTypes).Invoke(null)
    这么来做了
    传入的时候typeof(xxxx)谢谢大家热心帮忙~
      

  8.   

    泛型Attribute啊- - 主帖里面说了的我的意思是用泛型Attrribute想干嘛?  就是需求要描述清楚
    很简单列出了这样一个技术点啊,他的应用场景可以是各种各样的
    我这里就是有一个验证码基类,然后各个项目根据自己的需求有继承于他的子类(处理存取和字符筛选等等)。
    在使用这个FilterAction的时候,以这样的方式FilterAction<T> where T : xxxbase,new()去声明是最方便的,在内部直接new T()就可以了,然后操作的时候塑形为xxxbase。