【问题标题】:pass class name as argument to function [duplicate]将类名作为参数传递给函数[重复]
【发布时间】:2017-12-30 02:21:24
【问题描述】:

是否可以在不使用 typeof 或初始化的情况下将 ClassA 作为参数传递?

class ClassA {
}

class ClassB {
     public void Function([something here] clazz) {
                  ......
     }
}

class ClassC {

     public void main() {
         ClassB asdf = new ClassB();
         asdf.Function(ClassA);   // pass like that, not typeof() or something else
     }
}

【问题讨论】:

  • 我怀疑你可能有 XY 问题...
  • 那个函数使用ClassA怎么样?
  • 如果您的要求是让asdf.Function(ClassA); 工作而不是“typeof() 或其他东西”,那么这是不可能的。

标签: c#


【解决方案1】:

是的,您可以将类型作为泛型参数传递。

class ClassA {
}

class ClassB {
    public void Function<T>() {
              ......
    }


class ClassC {
    public void main() {
        ClassB asdf = new ClassB();
        asdf.Function<ClassA>();   // magic
    }
}

这种事情在 IoC 容器和自动工厂中很常见:

var o = container.Resolve<SomeClassName>();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 2013-07-09
    • 2017-08-04
    • 2013-01-27
    • 1970-01-01
    相关资源
    最近更新 更多