C# 如何创建类对象

C# 如何创建类对象,c#,asp.net,C#,Asp.net,我有一个名为ErrorMessageTest的类,它有一些属性 我有另一个名为ErrorHandlerTest的类和一个名为HandleErrorTest的方法,该方法将把上述内容作为参数,并在下面的结构中创建一个类 public class ErrorMessageTest { private string EventId; private string TransactionId; private string Timestamp; private strin

我有一个名为
ErrorMessageTest
的类,它有一些属性

我有另一个名为ErrorHandlerTest的类和一个名为
HandleErrorTest
的方法,该方法将把上述内容作为参数,并在下面的结构中创建一个类

public class ErrorMessageTest
{
    private string EventId;
    private string TransactionId;
    private string Timestamp;
    private string Component;
    private string UserId;
    private string Message;
    private string Exception;
}

public static class ErrorHandlerTest
{
    public static void HandleErrorTest(string EventId, string TransactionId, 
                                       DateTime Timestamp, string Component,
                                       string UserId)
    {

    }
}

我需要返回一个
ErrorMessage
对象,但我不知道如何创建它的实例。

在ErrorHandlerTest中实例化ErrorMessageTest添加:

ErrorMessageTest errorMessageTest = new ErrorMessageTest();
这将创建一个类ErrorMessageTest的实例,可以通过局部变量ErrorMessageTest进行访问,您可以随意使用它


编辑:粘贴了错误的名称副本,替换为ErrorHandlerTest中的errorMessageTest,以实例化errorMessageTest添加:

ErrorMessageTest errorMessageTest = new ErrorMessageTest();
这将创建一个类ErrorMessageTest的实例,可以通过局部变量ErrorMessageTest进行访问,您可以随意使用它


编辑:粘贴了错误的名称副本,替换为errorMessageTest,尽管您的所有变量在errorMessageTest类中都是私有的。你需要公开它。 你可以这样做-

public class ErrorMessage
{
    public string EventId;
    public string TransactionId;
    public DateTime Timestamp;
    public string Component;
    public string UserId;
    public string Message;
    public string Exception;
}

public class ErrorHandlerTest
{
    public static ErrorMessage HandleErrorTest(string EventId, string TransactionId,
                                       DateTime Timestamp, string Component,
                                       string UserId)
    {
        return new ErrorMessage()
        {
            Component = Component,
            EventId = EventId,
            Timestamp = Timestamp,
            TransactionId  = TransactionId,
            UserId = UserId

        };
    }
}

尽管您的所有变量在ErrorMessageTest类中都是私有的。你需要公开它。 你可以这样做-

public class ErrorMessage
{
    public string EventId;
    public string TransactionId;
    public DateTime Timestamp;
    public string Component;
    public string UserId;
    public string Message;
    public string Exception;
}

public class ErrorHandlerTest
{
    public static ErrorMessage HandleErrorTest(string EventId, string TransactionId,
                                       DateTime Timestamp, string Component,
                                       string UserId)
    {
        return new ErrorMessage()
        {
            Component = Component,
            EventId = EventId,
            Timestamp = Timestamp,
            TransactionId  = TransactionId,
            UserId = UserId

        };
    }
}

你有一些基本的错误

首先,您的所有字段都是私有的。相反,您将希望创建公共属性:

现在,在
HandleError
方法中,需要返回类型
ErrorMessage
而不是
void
<代码>作废表示无退货类型。如果您还希望将其设置为
静态
类,请按如下操作:

public static class ErrorHandler
{
    public static ErrorMessage HandleError(string eventId, string transactionId, 
                                           DateTime timeStamp, string component,
                                           string userId)
    {
        return new ErrorMessage
        {
            EventId = eventId,
            TransactionId = transactionId,
            Timestamp = timeStamp,
            Component = component,
            UserId = userId
        };
    }
}

你有一些基本的错误

首先,您的所有字段都是私有的。相反,您将希望创建公共属性:

现在,在
HandleError
方法中,需要返回类型
ErrorMessage
而不是
void
<代码>作废表示无退货类型。如果您还希望将其设置为
静态
类,请按如下操作:

public static class ErrorHandler
{
    public static ErrorMessage HandleError(string eventId, string transactionId, 
                                           DateTime timeStamp, string component,
                                           string userId)
    {
        return new ErrorMessage
        {
            EventId = eventId,
            TransactionId = transactionId,
            Timestamp = timeStamp,
            Component = component,
            UserId = userId
        };
    }
}

在必须为测试设置专用字段的情况下,我建议使用Microsoft.VisualStudio.TestTools.UnitTesting包中的。它有一个允许您设置私有字段的方法

这篇文章讨论PrivatObject和PrivateType的主题。PrivateObject用于访问实例的私有成员,而PrivateType用于静态类成员


但是请注意,通过反射设置私有字段(就像PrivateObject一样)有一个缺点,即您的测试需要了解ErrorMessage类的内部信息,这违反了根据约定进行测试的原则(公共类成员、接口)类型。

在必须为测试设置专用字段的情况下,我建议使用Microsoft.VisualStudio.TestTools.UnitTesting包中的。它有一个允许您设置私有字段的方法

这篇文章讨论PrivatObject和PrivateType的主题。PrivateObject用于访问实例的私有成员,而PrivateType用于静态类成员


但是请注意,通过反射设置私有字段(就像PrivateObject一样)有一个缺点,即您的测试需要了解ErrorMessage类的内部信息,这违反了根据约定进行测试的原则(公共类成员、接口)类型。

我希望您需要在方法HandleErrorTest()中返回一个ErrorMessageTest类。如果是这样,只需将方法的返回类型更改为ErrorMessageTest

    public static ErrorMessageTest HandleErrorTest(string EventId, string TransactionId, 
                                   DateTime Timestamp, string Component,
                                   string UserId)
{

}
并创建一个类ErrorMessageTest的实例,并形成如下返回的对象

  return new ErrorMessageTest
 {
     EventId = eventId,
     TransactionId = transactionId,
     Timestamp = timeStamp,
     Component = component,
     UserId = userId
 };
现在,您的方法如下所示

    public static ErrorMessageTest HandleErrorTest(string EventId, string TransactionId, 
                                   DateTime Timestamp, string Component,
                                   string UserId)
        {

  return new ErrorMessageTest
    {
     EventId = eventId,
     TransactionId = transactionId,
     Timestamp = timeStamp,
     Component = component,
     UserId = userId
    };
       }

我希望您需要在方法HandleErrorTest()中返回一个ErrorMessageTest类。如果是这样,只需将该方法的返回类型更改为ErrorMessageTestlike即可

    public static ErrorMessageTest HandleErrorTest(string EventId, string TransactionId, 
                                   DateTime Timestamp, string Component,
                                   string UserId)
{

}
并创建一个类ErrorMessageTest的实例,并形成如下返回的对象

  return new ErrorMessageTest
 {
     EventId = eventId,
     TransactionId = transactionId,
     Timestamp = timeStamp,
     Component = component,
     UserId = userId
 };
现在,您的方法如下所示

    public static ErrorMessageTest HandleErrorTest(string EventId, string TransactionId, 
                                   DateTime Timestamp, string Component,
                                   string UserId)
        {

  return new ErrorMessageTest
    {
     EventId = eventId,
     TransactionId = transactionId,
     Timestamp = timeStamp,
     Component = component,
     UserId = userId
    };
       }

什么是
错误消息
?你是说
ErrorMessageTest
?创建类实例的常用机制有什么问题,即
newerrormessage()
newerrormessagetest
,视情况而定)?如果方法声明为返回
void
,您打算如何从
HandleErrorTest()
方法返回任何内容?我觉得这个问题一点也不清楚。你不能从void方法返回ErrorMessage。什么是错误消息?你缺少一些代码吗?您想在何处创建并返回错误消息?请注意:回答者:
handleerrertest
静态的
什么是
ErrorMessage
?你是说
ErrorMessageTest
?创建类实例的常用机制有什么问题,即
newerrormessage()
newerrormessagetest
,视情况而定)?如果方法声明为返回
void
,您打算如何从
HandleErrorTest()
方法返回任何内容?我觉得这个问题一点也不清楚。你不能从void方法返回ErrorMessage。什么是错误消息?你缺少一些代码吗?您想在何处创建并返回错误消息?请注意:回答者:
HandleErrorTest
static
不,ErrorHandlerTest是静态类不,ErrorHandlerTest是静态类返回
ErrorMessageTest
的实例,而不是
ErrorMessage
requests@PeterDuniho,正确的。但是他要的ErrorMessage类在哪里?你也在这里,事实上我在前面读过它作为ErrorMessageTest。这返回了一个
ErrorMessageTest
的实例,而不是
ErrorMessage
requests@PeterDuniho对