当前位置:  开发笔记 > 编程语言 > 正文

我可以阻止用户修改C#中的参数吗

如何解决《我可以阻止用户修改C#中的参数吗》经验,为你挑选了1个好方法。

我正在为一群人编写C#编码,我正在设计要编码的方法的签名,我需要一种方法来确保人们不会修改他们将收到的一些参数.它们接收大结构,因此它们通过引用发送,但我希望它们在不修改原始值的情况下使用数据.但由于结构很大,我们不想复制它们.

我们可以假设他们不想改变数据,我们只需要保护他们不犯错误.

C#提供哪些解决方案?

这是一个例子

Class MyDataBlok {
    List samples;
    int someParams;
    double lots of other params
    }

Class MySetOfDataBlock
{
    List DataSet;
    bool SomeParam;
    Double lots of other params;
}

Class MethodsToBeCoded
{
    ProcessSetOfData( /*some tag defining data as protected*/ MySetOfDataBlock data)
    {
         //Here I want code that uses data without modifying data
         // nor the content on any data.DataSet[i]
    }
}

nvoigt.. 5

悲观的答案是.如果想要更改数据,他们.除了制作副本之外,你无能为力.


乐观的回答假设他们不想改变数据,你只需要保护他们不犯错误.现在这是可能的:

不要给他们任何安装者.您没有说出您的数据是什么样的,所以我只能给您一个模糊的描述:

不要暴露安装者.将它们的接口提供给没有setter的数据类,返回集合IEnumerable<>而不是它们可修改的实例,依此类推.确保通过界面访问您的数据,您的数据无法修改.



1> nvoigt..:

悲观的答案是.如果想要更改数据,他们.除了制作副本之外,你无能为力.


乐观的回答假设他们不想改变数据,你只需要保护他们不犯错误.现在这是可能的:

不要给他们任何安装者.您没有说出您的数据是什么样的,所以我只能给您一个模糊的描述:

不要暴露安装者.将它们的接口提供给没有setter的数据类,返回集合IEnumerable<>而不是它们可修改的实例,依此类推.确保通过界面访问您的数据,您的数据无法修改.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有