如何将泛型类型(T)作为参数?
How to put generic Type (T) as parameter?
我有这个错误:
Severity Code Description Project File Line
Error CS0246 The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
关于此方法的方法签名:
public static void SendMessage(string queuName, T objeto)
{
QueueClient Client =QueueClient.CreateFromConnectionString(connectionString, "Empresa");
BrokeredMessage message = new BrokeredMessage(objeto);
message.ContentType = objeto.GetType().Name;
Client.Send(new BrokeredMessage(message));
}
public static void SendMessage<T>(string queuName, T objeto)
{
QueueClient Client =QueueClient.CreateFromConnectionString(connectionString, "Empresa");
BrokeredMessage message = new BrokeredMessage(objeto);
message.ContentType = objeto.GetType().Name;
Client.Send(new BrokeredMessage(message));
}
您忘记指定类型参数。
您可以通过两种方式做到这一点:
要么在方法定义中定义它们(在你的情况下这是可行的方法,因为你的方法是静态的):
public static void SendMessage<T>(string queuName, T objeto)
或者您可以在 class 定义中指定它们(例如方法):
class MyClass<T>{
public void SendMessage(string queuName, T objeto){}
}
您示例的正确语法是:
public static void SendMessage<T>(string queuName, T objeto)
{
// Type of T is
Type t = typeof(T);
// Obtain Name
string name = t.Name
// Create another instance of T
object to = Activator.CreateInstance<T>();
// etc.
}
总的来说:
T method<T>(T param) where T: restrictions //new() for example
{ return (T)Activator.CreateInstance<T>(); }
我有这个错误:
Severity Code Description Project File Line
Error CS0246 The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
关于此方法的方法签名:
public static void SendMessage(string queuName, T objeto)
{
QueueClient Client =QueueClient.CreateFromConnectionString(connectionString, "Empresa");
BrokeredMessage message = new BrokeredMessage(objeto);
message.ContentType = objeto.GetType().Name;
Client.Send(new BrokeredMessage(message));
}
public static void SendMessage<T>(string queuName, T objeto)
{
QueueClient Client =QueueClient.CreateFromConnectionString(connectionString, "Empresa");
BrokeredMessage message = new BrokeredMessage(objeto);
message.ContentType = objeto.GetType().Name;
Client.Send(new BrokeredMessage(message));
}
您忘记指定类型参数。 您可以通过两种方式做到这一点:
要么在方法定义中定义它们(在你的情况下这是可行的方法,因为你的方法是静态的):
public static void SendMessage<T>(string queuName, T objeto)
或者您可以在 class 定义中指定它们(例如方法):
class MyClass<T>{
public void SendMessage(string queuName, T objeto){}
}
您示例的正确语法是:
public static void SendMessage<T>(string queuName, T objeto)
{
// Type of T is
Type t = typeof(T);
// Obtain Name
string name = t.Name
// Create another instance of T
object to = Activator.CreateInstance<T>();
// etc.
}
总的来说:
T method<T>(T param) where T: restrictions //new() for example
{ return (T)Activator.CreateInstance<T>(); }