【C#--抽象类(转载)】教程文章相关的互联网学习教程文章

c# – 在抽象类中实现接口【代码】

是否可以在抽象类中实现接口并将实现的接口方法更改为抽象?interface ITest {string GetData();int ProcessData(); }public abstract class MyAbstract:ITest {public int Process(){// some code}public abstract string GetData(); // Change the implemented method into abstract Is it Possible? }解决方法:是的,你可以做到.只需添加abstract关键字并删除实现.这显然是一个陷阱.任何继承自抽象类的类都必须自己实现GetData.根...

c# – 如何使用反射创建或调用抽象类的受保护构造函数?【代码】

我试图使用反射调用或创建抽象类的实例.这可能吗.这是我尝试过的,但是我收到一条错误,上面写着“无法创建抽象类的实例”.Type dynType = myTypes.FirstOrDefault(a => a.Name == "MyAbstractClass"); ConstructorInfo getCons = dynType.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[0], null); object dynamicInstance = getCons.Invoke(null);编辑:我可以使用反射访问此抽象类的属性吗?解...

c# – 抽象类的非静态方法和静态方法有什么区别?【代码】

我知道在Abstract类中使用静态方法不是最佳实践,但有什么区别如果我在抽象类中同时使用静态和非静态方法. 我假设调用这些方法没有区别,因为我们不能为Abstract Class创建实例,所以我们只能使用类名调用静态和非静态方法. 除了关键字“静态”之外,它们之间还有其他区别吗? 例如:抽象类:abstract public class AbstractClass {#region Constructorprotected AbstractClass(Args args): this(args){}#endregion#region public stat...

c# – 在抽象类中获取属性的set访问器,不可能吗?【代码】

鉴于班级’:public abstract class AbstractEntity {public virtual Guid Id { get; private set; } }public class Entity {public virtual Guid Id { get; private set; } }以及属性’Id’的PropertyInfo. 调用方法时:PropertyInfo.GetAccessors()当类不是抽象的时(实体),它返回get方法和set方法,但是当类是抽象的时候只有get-method(AbstractEntity). 为什么是这样?还有另一种方法从具有私有集的属性中获取set方法吗?解决方法...

在C#中使用抽象类【代码】

我有一个抽象类,其他类继承这个.public abstract class GenericAccess<TEntity> {public static IList<TEntity> GetObjectListFromArray(int[] IDs){//Your help need is here.} }public class Doors : GenericAccess<DoorEntity> {}public class DoorEntity {public int Id { get; set; }public string Name { get; set; } }我需要创建一个通用方法,所以当我可以IList<DoorEntity> Doors.GetObjectListFromArray(int[] {1,2,3,4,5...

c# – 我应该如何用Moq模拟这个抽象类?【代码】

这并不是Moq特有的,而是更多的一般Mocking框架问题.我为类型为“IAsset”的对象创建了一个模拟对象.我想模仿从IAsset的getter返回的类型,“Info”.var mock = new Mock<IAsset>();mock.SetupGet(i => i.Info).Returns(//want to pass back a mocked abstract);mock.SetupProperty(g => g.Id, Guid.NewGuid());我遇到的问题是模拟这个返回的属性值.mock.SetupGet(i => i.Info).Returns(//this is the type I need to mock);该属性包...

c# – 抽象类与接口的建议

我知道接口和抽象类之间的区别.现在我想知道我需要在抽象类上使用接口,反之亦然. 这篇文章我提到了Recommendations for Abstract Classes vs. Interfaces 在那里面 以下是一些建议,可帮助您决定是使用接口还是抽象类来为组件提供多态性.If you anticipate creating multiple versions of your component, createan abstract class. Abstract classes provide a simple and easy way toversion your components. By updating the ba...

c# – 属性,接口或抽象类【代码】

我想知道以下实现的一般建议(属性,接口,抽象类或其组合):/// <summary>/// Loads class specific information into a list for serialization. The class must extend PlugIn./// The filenames parameter is passed from a FileDialog./// </summary>/// <param name="filenames">Accepts any number of filenames with fully qualified paths.</param>public static void ExtractPlugInData(params string[] filenames){List<Ty...

c# – 如何从XML反序列化抽象类的具体实现【代码】

我有一个抽象类,有几个具体的实现.这需要序列化为XML才能发送到另一个系统 – 这很好.但是,我还需要能够反序列化相同的XML结构.无论我尝试什么,我似乎都无法做到这一点.我的班级结构如下: 抽象类:[XmlIncludeAttribute(typeof(ConcreteFooOne))] [XmlIncludeAttribute(typeof(ConcreteFooTwo))] [XmlIncludeAttribute(typeof(ConcreteFooThree))] [XmlRoot(ElementName = "FooData", Namespace="http://foo.bar")] public abstra...

C#:将子类实例分配给抽象类实现的接口【代码】

public interface IParser<T> where T: new() {IList<T> Parse(); }上面的接口是通过以下抽象类实现的public abstract class BaseParser<T>: IParser<T> where T : new() {protected abstract string Sql { get;}public List<T> Parse(){// do parsingConsole.WriteLine(Sql);} }以下是上面抽象类的两个具体实现public class EMailParser: BaseParser<Email> {protected override string Sql{get{return @"SELECT * FROM emails";}...

c# – 根据抽象类公开WCF子类【代码】

我有一个抽象类,我希望能够向WCF公开,以便任何子类也可以作为WCF服务启动.这是我到目前为止:[ServiceContract(Name = "PeopleManager", Namespace = "http://localhost:8001/People")] [ServiceBehavior(IncludeExceptionDetailInFaults = true)] [DataContract(Namespace="http://localhost:8001/People")] [KnownType(typeof(Child))] public abstract class Parent {[OperationContract][WebInvoke(Method = "PUT", UriTemplat...

c# – 如何确定哪个继承类正在使用抽象类的方法【代码】

在我的控制台应用程序中有一个抽象的Factory类“Listener”,它包含用于侦听和接受连接以及生成客户端类的代码.此类由另外两个类(WorldListener和MasterListener)继承,这些类包含更多特定于协议的覆盖和函数. 我还有一个辅助类(ConsoleWrapper),它封装和扩展System.Console,包含用于写入控制台信息的方法,用于解释WorldListener和MasterListener实例的内容. 我需要一种方法来在抽象的ListenerClass中确定哪个Inheriting类正在调用它...

c# – 抽象类:单一构造函数,访问修饰符?【代码】

我有以下代码片段:public abstract class Foo {protected Foo() }使用protected作为访问修饰符或公共使用之间的继承有什么区别吗? 我在这种情况下大多看到使用受保护.所以有区别,为什么人们使用公众保护?解决方法:可能存在一些微妙的情况,它会产生影响(并且可以通过反射检测到),但基本上它们是相同的.使它受保护可能更清楚,因为它实际上不能被派生类的构造函数调用.

49.C#--多态之抽象类【代码】

static void Main(string[] args){//抽象类例子:狗狗会叫,猫咪也会叫//实现多态,抽象类不能创建父类对象,所以只能指向子类//调用狗狗会叫的方法,创建一个子类对象赋值给父类Animal a = new Dog();//a虽然表现出来的是父类对象,但父类被子类重写了,所以最终输出的子类的方法//具体调哪个函数,取决于a装的是哪个子类的对象a.Bark(); ////调用猫咪会叫的方法//Animal a = new Cat();//a.Bark();Console.ReadKey();}//当父...

c# – EF Fluent API:为从基本抽象类派生的每个实体设置属性【代码】

我有一个BaseClass,它是抽象的,并且有许多抽象属性. 我有十几个(可能会增长)实体,它们是Entity Framework的一部分,每个实体都派生自BaseClass. 我试图避免不得不这样做:modelBuilder.Entity<Entity1>().HasKey(t => t.Id); modelBuilder.Entity<Entity2>().HasKey(t => t.Id); modelBuilder.Entity<Entity3>().HasKey(t => t.Id); ...对于每个属性和每个实体,因为这看起来非常浪费并且会产生大量的代码重复.我尝试通过以下方式获取...