class GrandParent
{
public virtual void Foo() { ... }
}
class Parent : GrandParent
{
public override void Foo()
{
base.Foo();
//Do additional work
}
}
class Child : Parent
{
public override void Foo()
{
//How to skip Parent.Foo and just get to the GrandParent.Foo base?
//Do additional work
}
}
Run Code Online (Sandbox Code Playgroud)
如上面的代码所示,我如何让Child.Foo()调用GrandParent.Foo()而不是进入Parent.Foo()?base.Foo()首先带我到Parent类.
示例代码:
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(String propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
Run Code Online (Sandbox Code Playgroud)
VS:
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(String propertyName)
{
if (PropertyChanged!= null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我总是看到人们创建将PropertyChanged分配给"处理程序"而不是仅使用它?
我有以下列表:
我想将这些字符串转换为一个字符串,逗号分隔,但我想首先为它们添加一个字符(@符号).最终结果应该是:@alpha,@beta,@charlie,@delta
我现在拥有的是非LINQ方法,但它似乎并不"干净":
String.Concat("@", String.Join(",@", mylist));
Run Code Online (Sandbox Code Playgroud) 有没有办法在使用reader.Read();?迭代行之前获取从SQL查询(来自IDataReader)返回的总行数?
我只是想知道它为什么Settings.Default.<mysetting>而不仅仅是Settings.<mysetting>?
我有一个类,用户可以将Action传入(或不传递).
public class FooClass<T> : BaseClass<T>
{
public FooClass()
: this((o) => ()) //This doesn't work...
{
}
public FooClass(Action<T> myAction)
: base(myAction)
{
}
}
Run Code Online (Sandbox Code Playgroud)
Action.但是,与此同时,我不想强迫我的用户传入Action.相反,我希望能够动态创建"无所事事"动作. 我有一个custom attribute用于标记成员的(不constructor,不properties):
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
public sealed class MyCustomAttribute : Attribute { }
Run Code Online (Sandbox Code Playgroud)
我该如何对此进行单元测试?而且,澄清......我知道'什么',但不知道'怎么样'
我假设有一种方法可以对其进行单元测试,以确保其正确AttributeUsage到位?那怎么能这样呢?每次我创建一个mock类并尝试将属性添加到错误的东西时它都不会让我编译,所以如何创建一个糟糕的模拟类来测试呢?
基本上,如果我使用MVVM并公开公共ICommands,我的代表应该公开还是私有?
我无法找到如何执行此操作,Visual Studio SDK参考也不是很有帮助.
我正在试图弄清楚如何获得NormalizedSnapshotSpanCollectionXML评论.我想在它们旁边放一个图标...我不希望每行旁边有一个图标,但只是在每个组的第一行旁边...
///<summary>SomeXML Comment</summary> [ICON]
///<remarks>some remarks</remarks>
public void Foo()
{
///Some false XML comment line that does not get an icon.
}
Run Code Online (Sandbox Code Playgroud) c# visual-studio-2010 xml-comments adornment visual-studio-sdk
我正在尝试使Microsoft Fakes与我的单元测试项目(net47)一起正常工作,其中我的项目文件格式正在使用新的NetSDK格式。
使用Visual Studio 2019,我可以添加一个Fakes程序集,并且看起来一切正常,直到我们尝试在构建代理上构建/运行测试为止。看起来,当您编译/构建项目时,会生成伪造的程序集,但它们是并行执行的,或者是在构建后执行的(我不确定)。在运行Visual Studio 2019 Enterprise的开发计算机上也会发生相同的问题。
我注意到,如果不存在FakesAssemblies文件夹,则在构建过程中会创建一个文件夹,但是编译会失败,因为没有发现* .Fakes命名空间。第二个编译/构建有效,因为现在已填充FakesAssemblies文件夹。需要注意的一件事是,我将Microsoft Fakes的dll文件放入了我们公司私人提要中的NuGet包中,这样我就可以将其作为NuGet包而不是引用来拉下来。
SampleUnitTests.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net47</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.1.0" />
<PackageReference Include="Microsoft.QualityTools.Testing.Fakes" Version="16.0.28621.142" />
<PackageReference Include="MSTest.TestAdapter" Version="1.4.0" />
<PackageReference Include="MSTest.TestFramework" Version="1.4.0" />
</ItemGroup>
<ItemGroup>
<Fakes Include="Fakes\*.fakes" />
<Reference Include="FakesAssemblies\*.dll" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud) c# ×10
unit-testing ×2
action ×1
adornment ×1
attributes ×1
concat ×1
count ×1
csproj ×1
datareader ×1
delegates ×1
events ×1
handler ×1
icommand ×1
inheritance ×1
lambda ×1
linq ×1
list ×1
mocking ×1
msbuild ×1
mvvm ×1
overriding ×1
polymorphism ×1
rows ×1
settings ×1
string ×1
wpf ×1
xml-comments ×1