如何在不重新创建新实例的情况下重置实例类的成员?

问题描述 投票:2回答:1

我想将Reset设置为我的类实例CommunicationErrorsDetails的所有成员的默认值。此类是嵌套类MyNestedClassInstance的一部分。

这是我想做的事情:

MyNestedClassInstance.CommunicationErrorsDetails.Reset()

这是我的嵌套类MyNestedClass的一个示例,其实例为MyNestedClassInstance

public class MyNestedClass : ICloneable
{
    ...

    /// <summary>
    /// Communication errors count
    /// </summary>
    public class CommunicationErrorsDetailsType : ICloneable
    {
        public int RetryCount;
        public int CRCErrorCount;
        public int DataBytesNotExpectedCount;
        public int TooMuchDataReceivedCount;
        public int ResponseDataAddressNotEqualCount;
        public int BytesReceivedInCommunicationStateStartCount;
        public int BytesReceivedInCommunicationStateSendFrameCount;
        public int BytesReceivedInCommunicationStateDataResponseReceivedCount;
        public int ExceptionCount;
        public int NakcReceivedCount;
        public int AckTimeoutCount;
        public int DataTimeoutCount;
        public double DataTimeoutRate;

        public bool HasCommunicationErrors
        {
            get => RetryCount > 0
                || CRCErrorCount > 0
                || DataBytesNotExpectedCount > 0
                || TooMuchDataReceivedCount > 0
                || ResponseDataAddressNotEqualCount > 0
                || BytesReceivedInCommunicationStateStartCount > 0
                || BytesReceivedInCommunicationStateSendFrameCount > 0
                || BytesReceivedInCommunicationStateDataResponseReceivedCount > 0
                || ExceptionCount > 0
                || NakcReceivedCount > 0
                || AckTimeoutCount > 0
                || DataTimeoutCount > 0;
        }

        public object Clone()
        {
            return MemberwiseClone();
        }

        internal void Reset()
        {
            // ... ?
        }
    }
    public CommunicationErrorsDetailsType CommunicationErrorsDetails = new CommunicationErrorsDetailsType();

    ...
    // Other nested classes
    ...
}

如何实现Reset()而不必重新创建新实例并且不必手动重置所有可以属于不同类型的成员?

所有成员都是简单类型(不是类)。

谢谢

c# class nested reset
1个回答
0
投票

c#上没有这样的“魔术重置”的东西。您必须手动进行。

© www.soinside.com 2019 - 2024. All rights reserved.