从另一个文件访问私有类

3

我希望将我的.cs文件分开存放,主要是因为这样看起来更整洁。在一个.cs文件中,我有Form.cs。我正在使用.NET Framework 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中访问它。这是否可能呢?我看过很多例子和提示,但都在同一个文件中。这是我脑海中的基本想法。如果有其他方法,我也愿意听取建议!
我是否需要创建一个公共构造函数?能否给我一个例子?
2个回答

5

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

public partial class Form1
{
    private class SessionData
    {
        public void getTicket();
    }
}

实际上是的,那正是我的目标。基本上我只想把数据分离到另一个文件.cs中。我只是认为数据不应该在 Form.cs 中,只有按钮和其他东西。但如果这只是我的美学需求,当然我会选择简单性。 - SuusvdVen

4
我认为有关凭据需要保持“私有”以不广播信息的混淆和OO可访问性“私有”类型范围的术语使用是两个不可互换的完全分离的概念。您的解决方案尝试使用C#类型可访问性来保护敏感信息是荒谬的,绝对是错误的方法。也许我可以提出另一个问题,询问如何在用户登录期间最好地保护敏感信息。
旧答案: 我假设SessionData是一个嵌套类?您不能在命名空间中定义私有类。如果您定义了一个私有嵌套类,则只有包含此私有类的类型才能使用它,无论构造函数的可访问性如何。因此,如果您想公开SessionData,请将其设置为public。如果代码都在同一程序集中,您还可以将SessionData设置为internal:
internal class SessionData { }

这个程序集外部的代码将无法引用SessionData


实际上是的,它是嵌套的。我希望这张票据能够得到很好的保护。而且我将其分成了两个文件,只能使用公共方式才能正常工作。我想知道是否有可能在两个单独的文件中保证安全性,或者人们如何在登录表单中处理这种情况?所有内容都在同一个Form.cs文件中吗? - SuusvdVen
@SuusvdVen 敏感信息的安全与 C# 类型可访问性无关,因此您将信息设为“私有”的解决方案是错误的做法。 - Adam Houldsworth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接