3

我想将我的 .cs 文件分开,主要是因为我认为这样看起来更整洁。在一个 .cs 文件中,我有 Form.cs。我在 .NET 框架 2.0 中工作。所以我有一个不同的 myClass.cs 文件,有几种方法。因为我希望表单的用户在访问方法中调用的 Web 服务之前进行身份验证,所以我希望信息是私有的。我在示例和教程中看到这通常在同一个文件中没有问题。但是,在我的目标中,我希望信息位于 class.cs 文件中。例如,我希望 myClass.cs 文件中的类看起来像这样(这还很粗糙):

    private class SessionData
    {
        private String fTicket;
        private string otherData;

        public SessionData( String ticket, String otherData)
        {
            fTicket = ticket;
            fotherData = otherData;
        }

        public String getTicket{ return fTicket; };
    }

然后在 form.cs 文件中访问它...

    private void LogOn_Click(object sender, EventArgs e)
    {

         myClass sessInfo = new myClass();

         string myTicket = sessInfo.SessionData();
         }
    }

问题是因为它是私有的,我无法在 Form.cs 中访问它。甚至有可能做到这一点吗?我看过很多示例和提示,但总是在同一个文件中。无论如何,这是我脑海中的基本想法。如果有其他方法,我愿意征求意见!

我是否必须创建一个公共构造函数,有人可以举个例子吗?

4

2 回答 2

5

您可以在单独的文件中定义嵌套类,例如“SessionData.cs”,只需将其包装在应该可以访问它的部分类中。

public partial class Form1
{
    private class SessionData
    {
        public void getTicket();
    }
}
于 2012-09-26T10:40:10.543 回答
4

我认为,在不广播信息的意义上,凭证是否需要保持“私有”以及在类型范围意义上用于 OO 可访问性的术语“私有”存在混淆。两者不可互换,是完全不同的想法。

您尝试使用 C# 类型可访问性保护敏感信息的解决方案是荒谬的,并且绝对是错误的方法。我可能会问另一个问题,即在用户登录期间如何最好地保护敏感信息。


老答案:

我假设这SessionData是一个嵌套类?您不能在命名空间中定义私有类。

如果你定义了一个私有嵌套类,那么只有包含这个私有类的类型才能使用它,而不管构造函数的可访问性如何。

所以说真的,如果你想曝光SessionData,就公开吧。

如果代码都在同一个程序集中,你也可以使SessionData内部:

internal class SessionData { }

此程序集之外的代码将无法引用SessionData

于 2012-09-26T10:33:41.057 回答