草庐IT

c# - 为继承的只读字段赋值?

所以我有一个有很多child的基类。该基类定义了一些具有默认值的只读属性和变量。这些可能会有所不同,具体取决于child。只读属性/字段允许您更改构造函数内变量的值以及定义,但不能更改其他地方。如果我尝试更改子类构造函数中继承的只读变量的值,我会收到“只读变量只能在构造函数中分配给”错误。为什么会这样,如果没有反射,我该如何解决这个问题?我的意图:允许用户通过脚本进行扩展,他们只能更改某些字段一次。 最佳答案 原因是您只能在该类的构造函数中分配给readonly字段。根据thedefinitionofreadonlyintheC#R

c# - readonly 关键字不会使 List<> 只读?

我在公共(public)静态类中有以下代码:publicstaticclassMyList{publicstaticreadonlySortedList>CharList;//...etc.}..但即使使用readonly我仍然可以将项目添加到另一个类的列表中:MyList.CharList[100]=newList(){newmyObj(30,30)};或MyList.CharList.Add(newList(){newmyObj(30,30)});有没有办法在不改变CharList实现的情况下使它只读(它会破坏一些东西)?如果我确实必须更改实现(使其不可更改),最好的方法是什么?我

c# - 为什么应用程序设置在 app.config 中是只读的?

我的app.config中有一些设置,我打算将其设置为“全局”-即。任何用户都可以更改它们,并且所有用户都获得相同的设置。但除非我将它们更改为用户设置,否则它们是只读的。这是为什么?我应该如何保留应用的全局设置?编辑:这实际上是一个Windows服务应用程序,它作为LocalSystem的服务运行。它也可以由本地管理员使用参数“/config”手动运行,这会启动一个窗口窗体来编辑配置值。因此在这两种情况下它都将具有对%PROGRAMFILES%的写入权限。因此,我访问我的设置的方式是:Settings.Default.MySetting=MyNewValue;当MySetting设置为

c# - 我希望 wpf DataGrid 的其余部分中的数据是只读的,只有新行应该是可编辑的

我已经设法让DataGrid显示用于添加新项目的新行。我现在面临的问题是我希望wpfDataGrid其余部分的数据是只读的,只有新行应该是可编辑的。目前这是我的DataGrid的样子。但由于我将列保持为只读,所以新行也添加为只读,这是我不想要的。 最佳答案 试试这个MSDNblog另外,试试下面的例子:Xaml:CS://////InteractionlogicforMainWindow.xaml///publicpartialclassMainWindow:Window{publicMainWindow(){InitializeC

Docker - mkdir 只读文件系统

全新安装Ubuntu18后,我在尝试启动绑定(bind)到LVM(ext4)分区的docker容器时收到以下错误:mkdir/storage:read-onlyfilesystem我已尝试重新安装操作系统,重新安装Docker并强制驱动器安装为RW(不是docker的所有内容都可以写入驱动器)。正在绑定(bind)的目录当前设置为777权限。似乎几乎没有关于此错误的信息。 最佳答案 我有同样的问题,但从snap中删除了docker并按照官方docker步骤重新安装。从快照中删除dockersnapremovedocker然后删除do

Docker - mkdir 只读文件系统

全新安装Ubuntu18后,我在尝试启动绑定(bind)到LVM(ext4)分区的docker容器时收到以下错误:mkdir/storage:read-onlyfilesystem我已尝试重新安装操作系统,重新安装Docker并强制驱动器安装为RW(不是docker的所有内容都可以写入驱动器)。正在绑定(bind)的目录当前设置为777权限。似乎几乎没有关于此错误的信息。 最佳答案 我有同样的问题,但从snap中删除了docker并按照官方docker步骤重新安装。从快照中删除dockersnapremovedocker然后删除do

c# - 如何在 PostBack() 之后保留只读文本框的文本?

我有一个ASP.NETTextBox,我希望它是ReadOnly。(用户使用另一个控件修改它)但是当有PostBack()时,文本会重置为空字符串。我知道,如果您将TextBox的ReadOnly属性设置为True,它的内容不会通过PostBack()。有没有办法在PostBack()之后保留内容并使TextBox不能被用户编辑?我尝试将Enabled属性设置为False,但是在PostBack()之后内容仍然没有保存。 最佳答案 我找到的另一个更简单的解决方案:将此添加到页面加载方法:protectedvoidPage_Load(

C#、不变性和公共(public)只读字段

我在很多地方都读到公开字段不是一个好主意,因为如果您以后想要更改属性,您将不得不重新编译所有使用您的类的代码。但是,在不可变类的情况下,我不明白为什么您需要更改属性-毕竟您不会向“集合”添加逻辑。对此有什么想法,我是否遗漏了什么?区别的例子,对于那些比文本更容易阅读代码的人:)//ImmutableTupleusingpublicreadonlyfieldspublicclassTuple{publicreadonlyT1Item1;publicreadonlyT2Item2;publicTuple(T1item1,T2item2){Item1=item1;Item2=item2;}}

c# - 如何在从构造函数调用的初始化方法中设置只读字段?

我确信我在某处看到我可以通过在我的Init()方法之上使用一个属性来执行以下操作,它告诉编译器只能从构造函数调用Init()方法,从而允许要设置的只读字段。不过我忘了这个属性叫什么,而且我似乎无法在谷歌上找到它。publicclassClass{privatereadonlyintreadonlyField;publicClass(){Init();}//AttributeherethattellsthecompilerthatthismethodmustbecalledonlyfromaconstructorprivatevoidInit(){readonlyField=1;}}

c# - 静态只读字段初始化程序与静态构造函数初始化

以下是初始化静态只读字段的两种不同方式。这两种方法有区别吗?如果是,什么时候应该优先选择一个?classA{privatestaticreadonlystringconnectionString=WebConfigurationManager.ConnectionStrings["SomeConnection"].ConnectionString;}classB{privatestaticreadonlystringconnectionString;staticB(){connectionString=WebConfigurationManager.ConnectionStrings[