2013-09-14 4 views
1

У меня есть два classs:Как передать параметр класса в качестве метода?

Class Gold; 
Class Functions; 

Существует метод ClassGet в классе Functions, который имеет 2 параметра. Я хочу отправить класс Gold в качестве параметра для одного из моих методов в классе Functions. Как это возможно?

Например:

public void ClassGet(class MyClassName, string blabla) 
{ 
    MyClassName NewInstance = new MyClassName(); 
} 

Внимание: Я хочу отправить MyClassName в качестве параметра строки в мой метод.

+0

просто создать объект для класса золота и передать ему функционировать в качестве аргумента. –

ответ

5

Функция вы пытаетесь уже реализовать существует (немного отличается)

Посмотрите на класс Activator: http://msdn.microsoft.com/en-us/library/system.activator.aspx

пример:

object instance = Activator.Create(className); 

Или так:

Type type = typeof(MyClass); 

MyClass instance = (MyClass)Activator.Create(type); 

или в вашем случае:

public void ClassGet(string MyClassName,string blabla) 
{ 
    object instance = Activator.Create(MyClassName); 
} 

// Call it like: 

Gold g = new Gold(); 
g.ClassGet("MyClass", "blabla"); 
2

Вы можете отправить его как параметр типа Type, но тогда вам нужно будет использовать отражение, чтобы создать экземпляр его. Вместо этого можно использовать общий параметр:

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

Неверный ответ ... Я хочу отправить свое имя класса как строку в качестве параметра для моего метода – AminAmiriDarban

+4

Как строка? Это определенно не то, о чем вы просили ... так, неправильный вопрос. ;) Затем вы должны использовать метод «Activator.CreateInstance (typestr, false)» для создания экземпляра из этой строки. – Guffa

1

Вы ищете параметры типа?

Пример:

public void ClassGet<T>(string blabla) where T : new() 
    { 
     var myClass = new T(); 
     //Do something with blablah 
    } 
0
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 

      } 

     } 
Смежные вопросы