private_class_greeter
全部标签 是否可以使C#基类仅在其编译到的库程序集中可访问,同时使从它继承的其他子类公开?例如:usingSystem.IO;classBaseOutput:Stream//Hiddenbaseclass{protectedBaseOutput(Streamo){...}...lotsofcommonmethods...}publicclassMyOutput:BaseOutput//Publicsubclass{publicBaseOutput(Streamo):base(o){...}publicoverrideintWrite(intb){...}}在这里,我希望我的库的客户端无法访问Ba
我有一个产品的数据传输对象类publicclassProductDTO{publicGuidId{get;set;}publicstringName{get;set;}//Otherproperties}当Asp.net序列化JSON(使用JSON.NET)或XML中的对象时,它会生成ProductDTO对象。但是,我想在序列化期间更改名称,从ProductDTO到Product,使用某种属性:[Name("Product")]publicclassProductDTO{[Name("ProductId")]publicGuidId{get;set;}publicstringName{
我想知道使用具有静态方法的非静态类与具有相同静态方法的静态类的一般好处(或缺点)是什么,除了我不能使用非静态类中的静态方法作为扩展方法。例如:classNonStaticClass{publicstaticstringGetData(){return"Thiswasinvokedfromanon-staticclass.";}}与此相比:staticclassStaticClass{publicstaticstringGetData(){return"Thiswasinvokedfromastaticclass.";}}使用一种方法优于另一种方法对性能/内存有何影响?注意:假设我不需要
我正在尝试使用Assembly.GetType("MyCompany.Class1.Class2")从字符串中动态获取类型。Assembly.GetType("MyCompany.Class1");按预期工作。如果我将一个类嵌入到另一个类中,例如:namespaceMyCompany{publicclassClass1{//.....publicclassClass2{//.....}}}并尝试获取类型Class2Assembly.GetType("MyCompany.Class1.Class2")将返回一个空值。我正在使用.NETFrameworks3.5SP1有谁知道我做错了什么以
我们的业务模型中有一个Student类。让我感到奇怪的是,如果我们从另一个学生操纵一个学生,学生的私有(private)成员是可见的,这是为什么?classProgram{staticvoidMain(string[]args){Students1=newStudent();Students2=newStudent();s1.SeePrivatePropertiesAndFields(s2);}}publicclassStudent{privateString_studentsPrivateField;publicStudent(){_studentsPrivateField=Date
我知道我可以写了:protectedstatic在我的C#类中(在我的例子中,是一个aspx.cs)。以及:privatestatic这是什么意思?静态无处不在。为什么要保护/私有(private)? 最佳答案 static的定义并不是“随处可用”。它是在AppDomain范围内声明的类型之间共享的变量。AccessModifiers不改变这个定义,但明显影响访问范围。你混淆了static带有访问修饰符的修饰符。静态变量仍然需要定义可访问性。在您的示例中,私有(private)静态变量只能在定义它的类型中访问,而protected变
我有一个静态类,我在其中使用字典作为查找表以在.NET类型和SQL类型之间进行映射。这是一个这样的字典的例子:privatestaticreadonlyDictionarySqlServerMap=newDictionary{{typeof(Boolean),"bit"},{typeof(Byte[]),"varbinary(max)"},{typeof(Double),"float"},{typeof(Byte),"tinyint"},{typeof(Int16),"smallint"},{typeof(Int32),"int"},{typeof(Int64),"bigint"},{
没有(显式)引用FirstName应该隐藏的firstName私有(private)变量。你能解释一下这是如何工作的吗?我假设正在获取和设置一些私有(private)变量。谢谢。//auto-implementedpropertyFirstNamepublicstringFirstName{get;set;} 最佳答案 基本上,编译器会将您的代码转换成如下内容:privatestringfirstName;publicstringFirstName{get{returnfirstName;}set{firstName=value;}
看到这个之后:Doaccessmodifiersaffectreflectionalso?我试过使用它,但它不起作用:如何防止反射执行我的私有(private)方法? 最佳答案 如果有人目前可以在您的私有(private)方法上使用反射,那么他们已经有足够的访问权限来回避您放置在他们面前的任何其他东西。以较低的信任度运行可能是一种选择,但这只是为了防止诸如插件之类的东西拥有过多的访问权限——它不会阻止具有(比如)管理员访问权限的用户访问该框,他们可以简单地提升访问权限。如果您不希望代码运行,请不要将其放在恶意用户的物理范围内;将其保
看完thisquestion问“特殊类”到底是什么,我剩下的问题是为什么这六个类System.Object、System.Array、System.Delegate、System.Enum和System.ValueType被选中并且hard-coded作为特殊类,防止它们被用作泛型类或方法的约束。很容易理解为什么System.Object在那里;所有类都继承System.Object,因此无需将其作为约束包含在内。我不清楚的是,为什么其他人被选为这个特殊类(class)类别的一部分。PS:当尝试将特殊类用作约束时,特殊类会引发编译错误CS0702。 最佳答案