草庐IT

new-style-class

全部标签

c# - 使用 Assembly.GetType ("MyCompany.Class1.Class2") 返回 null

我正在尝试使用Assembly.GetType("MyCompany.Class1.Class2")从字符串中动态获取类型。Assembly.GetType("MyCompany.Class1");按预期工作。如果我将一个类嵌入到另一个类中,例如:namespaceMyCompany{publicclassClass1{//.....publicclassClass2{//.....}}}并尝试获取类型Class2Assembly.GetType("MyCompany.Class1.Class2")将返回一个空值。我正在使用.NETFrameworks3.5SP1有谁知道我做错了什么以

c# - 之前的 "new"运算符会怎样?

DispatcherTimerdt=newDispatcherTimer();dt.Interval=newTimeSpan(0,0,0,0,100);dt.Tick+=newEventHandler(dt_dt);我对new关键字有疑问。我有一个设置为间隔的DispatcherTimer。假设用户想要更改间隔。dt.Interval=newTimeSpan(0,0,0,0,50);那么,第一个newTimeSpan会发生什么?它还在那里吗?还是新的会覆盖旧的?我不这么认为。如果我想更改时间间隔,new关键字是否是声明新TimeSpan的唯一方法?我问这个,因为我不确定每次值更改时声明

c# - new() 是什么意思?

WCFRIA服务中有一个AuthenticationBase类。类定义如下://assumeusingSystem.ServiceModel.DomainServices.Server.ApplicationServicespublicabstractclassAuthenticationBase:DomainService,IAuthenticationwhereT:IUser,new()这段代码中new()是什么意思? 最佳答案 这是newconstraint.它指定T不能是abstract并且必须公开一个public无参数co

c# - 如果类型 T 需要实例化,为什么通用类签名需要指定 new() ?

我正在编写一个通用类,如下所示。publicclassFoo:whereT:Bar,new(){publicvoidMethodInFoo(){T_t=newT();}}如您所见,类型T的对象_t是在运行时实例化的。为了支持泛型类型T的实例化,该语言强制我将new()放在类签名中。如果Bar是一个抽象类,我会同意这一点,但如果Bar是具有公共(public)无参数构造函数的标准非抽象类,为什么需要这样。如果没有找到new(),编译器会提示以下消息。无法创建变量类型“T”的实例,因为它没有new()约束 最佳答案 因为通常没有假设模板

c# - 为什么这些是 "Special Classes"?

看完thisquestion问“特殊类”到底是什么,我剩下的问题是为什么这六个类System.Object、System.Array、System.Delegate、System.Enum和System.ValueType被选中并且hard-coded作为特殊类,防止它们被用作泛型类或方法的约束。很容易理解为什么System.Object在那里;所有类都继承System.Object,因此无需将其作为约束包含在内。我不清楚的是,为什么其他人被选为这个特殊类(class)类别的一部分。PS:当尝试将特殊类用作约束时,特殊类会引发编译错误CS0702。 最佳答案

c# - 给定 "where T : new()", "new T()"是否在内部使用 Activator.CreateInstance?

如果我有一个类型参数约束new():voidFoo()whereT:new(){vart=newT();}newT()是否会在内部使用Activator.CreateInstance方法(即反射)? 最佳答案 是的,这是真的。编辑2:这里很好地解释了方法和原因。http://www.simple-talk.com/community/blogs/simonc/archive/2010/11/17/95700.aspx为了验证我编译了如下方法:publicstaticTCreate()whereT:new(){returnnewT()

c# - 委托(delegate)操作 : new Action or casting Action?

我发现了两种不同的方法来使用Action初始化Delegate:创建一个新的Action或转换为Action。Delegatefoo=newAction(()=>DoNothing(param));Delegatebar=(Action)(()=>DoNothing(param));这两种语法有区别吗?哪个更好,为什么?此示例中使用了委托(delegate),因为语法对于使用lambda表达式调用BeginInvoke或Invoke等方法很有用,并且将lambda表达式转换为操作很重要staticmain{Invoke((Action)(()=>DoNothing()));//OKIn

c# - 我的控件是 "not allowed here because it does not extend class ' System.Web.UI.UserControl'”

所以我有另一个刮面器(无论如何对我来说)。我正在尝试在CMS中创建我自己的自定义控件,我只有部分源代码(即供应商提供给我的示例)。基本上,我创建了一个名为DataDefinitionContent的类,它扩展了ControlBase。现在,根据我从元数据中获得的信息,ControlBase扩展了UserControl,所以我原以为这不会发生什么戏剧性的事情。谁能阐明为什么这对我不起作用?我的类(class):publicpartialclassDataDefinitionContent:ControlBase,ICustomControl{...Stuff}控制库:usingSyste

c# - Lazy<T> 如何解决需要 new() 约束的问题?

示例1(不编译):voidMain(){varc=newC();c.M.F();}classC{T_m=null;publicTM{get{if(_m==null)_m=newT();return_m;}}}classD{publicvoidF(){Console.WriteLine("iwascreated");}}结果:Cannotcreateaninstanceofthevariabletype'T'becauseitdoesnothavethenew()constraint示例2(有效):voidMain(){varc=newC();c.M.F();}classC{Lazy_m

c# - 你如何解决 "StyleCop C# style"和 "Framework Design Guidelines C# style"之间的差异?

在阅读了好书“FrameworkDesignGuidelines”(2008年11月第2版)的附录A“C#编码风格约定”之后,我对Microsoft内部使用/推荐的编码风格感到很困惑。博客条目ABriefHistoryOfC#Style声明:Infact,thedifferencesbetweenthe"StyleCopstyle"andthe"FrameworkDesignGuidelinesstyle"arerelativelyminor在我看来,差异非常明显。StyleCop说左大括号应该在单独的一行上,框架设计指南说它应该在开头语句之后。StyleCop说所有关键字后面都要跟一