如何将类作为方法的参数传递? [复制]

Posted

技术标签:

【中文标题】如何将类作为方法的参数传递? [复制]【英文标题】:How to pass a Class as parameter for a method? [duplicate] 【发布时间】:2013-09-19 08:06:01 【问题描述】:

我有两个班级:

Class Gold;
Class Functions;

Functions 类中有一个方法ClassGet,它有 2 个参数。 我想发送Gold 类作为Functions 类中我的方法之一的参数。 怎么可能?

例如:

public void ClassGet(class MyClassName, string blabla)

    MyClassName NewInstance = new MyClassName();

注意:我想将MyClassName 作为字符串参数发送到我的方法。

【问题讨论】:

只需为黄金类创建一个对象并将其作为参数传递给函数。 【参考方案1】:

您在寻找类型参数吗?

例子:

    public void ClassGet<T>(string blabla) where T : new()
    
        var myClass = new T();
        //Do something with blablah
    

【讨论】:

【参考方案2】:

您尝试实现的功能已经存在(有点不同)

查看 Activator 类:http://msdn.microsoft.com/en-us/library/system.activator.aspx

示例:

private static object CreateByTypeName(string typeName)

    // scan for the class type
    var type = (from assembly in AppDomain.CurrentDomain.GetAssemblies()
                from t in assembly.GetTypes()
                where t.Name == typeName  // you could use the t.FullName as well
                select t).FirstOrDefault();

    if (type == null)
        throw new InvalidOperationException("Type not found");

    return Activator.CreateInstance(type);

用法:

var myClassInstance = CreateByTypeName("MyClass");

【讨论】:

@T.Todua 你是对的。我会更新的。【参考方案3】:

您可以将它作为Type 类型的参数发送,但是您需要使用反射来创建它的实例。您可以改用泛型参数:

public void ClassGet<MyClassName>(string blabla) where MyClassName : new() 
  MyClassName NewInstance = new MyClassName();

【讨论】:

错误答案...我想将我的类名作为字符串作为参数发送给我的方法 作为字符串?这绝对不是你要求的......所以,错误的问题。 ;) 然后您将使用 Activator.CreateInstance(typestr, false) 方法从该字符串创建一个实例。【参考方案4】:
 public void ClassGet(string Class, List<string> Methodlist)
        
            Type ClassType;
            switch (Class)
            
                case "Gold":
                    ClassType = typeof(Gold); break;//Declare the type by Class name string
                case "Coin":
                    ClassType = typeof(Coin); break;
                default:
                    ClassType = null;
                    break;
            
            if (ClassType != null)
            
                object Instance = Activator.CreateInstance(ClassType); //Create instance from the type

            

        

【讨论】:

以上是关于如何将类作为方法的参数传递? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将类类型作为函数参数传递

Actionscript 3:将类作为参数传递

将类类型作为参数传递并针对 Kotlin 中的另一个对象检查类型

将类变量作为默认值分配给类方法参数

如何在Java中将泛型对象作为方法参数传递? [复制]

将类对象实例作为参数从 main() 传递给另一个类对象实例