Tag: interface

使用具体类型实现ICollection 以满足Entity Framework

所以,这是一个迟钝的问题,但让我看看我是否可以相对简单地说出来。 可以说我有以下界面: public interface IFoo { ICollection Bars { get; set; } } 然后我实施: public class Foo : IFoo { public virtual ICollection Bars { get; set; } } 只有Entity Framework无法使用接口,所以它几乎完全忽略了这个导航属性。 为了让EF识别它,我需要将其更改为: public virtual ICollection Bars { get; set; } Bar应该是我对IBar实施。 只是,未能实现希望IBar不是Bar的界面。 现在,考虑一个稍微不同的场景,我刚刚得到一个基本的外键: public interface IFoo { IBar Bar { get; set; } } public […]

AutoMapper:将接口映射到抽象类 – 这可能吗?

我正在使用AutoMapper在我的应用程序的不同层之间映射对象。 一方面我有一个如下所示的界面: public interface MyRepo { IEnumerable GetItems(param); } IRootObject看起来像这样: public interface IRootObject { int Id { get; set; } DateTime? Date { get; set; } } public interface IFirstSubObject : IRootObject { string MyFirstProp { get; set; } } public interface ISecondSubObject : IRootObject { string MySecondProp { get; set; } } 所以GetItems()调用实际上只返回一个IxxxSubObjectItems数组。 另一方面,结构如下所示: […]

通过接口使用静态类?

想象一下,您需要从整个应用程序中访问一些方法。 静态类是理想的。 public static class MyStaticClass { public static void MyMethod() { // Do Something here… } } 但也许将来我会在另一个静态类中添加静态方法的第二个实现。 public static class MyStaticClass2 { public static void MyMethod() { // Do Something here… } } 有没有办法改变我的其他代码中使用的静态类而不更改MyStaticClass.MeMethod();的调用MyStaticClass.MeMethod(); 到MyStaticClass2.MyMethod(); ? 我想到了一个界面,但我不知道如何实现这个……如果我说疯了就说出来,我只会改变电话:D

索引器作为C#中接口的一部分

在C#中,将索引器声明为接口的一部分的语法是什么? 它还是这个[]吗? 在界面中使用this关键字有点奇怪。

接口和抽象类中的Xml属性

我今天发现了一些困扰我的东西: 1.如果我有这个: public interface INamed { [XmlAttribute] string Name { get; set; } } public class Named : INamed { public string Name { get; set; } } 它提供以下输出(Name属性序列化为元素): Johan 2.如果我有这个: public abstract class NamedBase { [XmlAttribute] public abstract string Name { get; set; } } public class NamedDerived : NamedBase { public override string […]

将DataMemberAttribute放在接口成员上意味着什么?

将DataMemberAttribute放在接口成员上意味着什么? 这对派生类有何影响?

是否可以在接口中包装C#单例?

我目前有一个类,我只有静态成员和常量,但我想用一个包装在界面中的单例替换它。 但是我怎么能这样做,记住我见过的每个单例实现都有一个静态实例方法,从而破坏了接口规则?

您可以使用C#new关键字来扩展接口的属性吗?

我理解“new”关键字如何隐藏派生类中的方法。 但是,它对实现使用关键字的接口的类有什么影响? 考虑这个例子,我决定通过使其属性读/写来扩展接口。 public interface IReadOnly { string Id { get; } } public interface ICanReadAndWrite : IReadOnly { new string Id { get; set; } } 然后你就可以做到这样的事情: public IReadOnly SomeMethod() { // return an instance of ICanReadAndWrite } 这是不好的设计吗? 它会导致我的类实现ICanReadAndWrite的问题吗? 编辑:这是一个人为的例子, 说明为什么我可能想要做这样的事情: 假设我有一个返回IShoppingCartItemReadWrite的工厂类。 然后,我可以有一个服务层来操纵价格,更改东西等。然后,我可以将这些对象作为IShoppingCartItemReadOnly传递给某种不会改变它们的表示层。 (是的,我知道它在技术上可以改变它们 – 这是一个设计问题,而不是安全性等)

当(当前)只是一个实现它的类时,你应该创建一个接口吗?

如果可能有其他东西可以使用它,或者等到实际需要它然后重构使用接口,你是否应该总是创建一个接口? 对界面进行编程通常看起来像是一个合理的建议,但那时就有YAGNI …… 我想也许这取决于具体情况。 现在我有一个对象代表一个可以包含食谱或其他文件夹的文件夹。 而不是直接使用Folder,我应该担心像IContainer这样的实现吗? 在未来的情况下,我希望有一个参考其他子食谱的配方(比如一个苹果馅饼配方,也是馅饼皮配方的容器)

C#中的接口inheritance

我正试图在写我的应用程序时遇到的问题(我)问题。 请看这个(我会尽量缩短代码): 我有一个名为IRepository根接口。 接下来, IBookRepository : IRepository接下来,实现它的具体类: BookRepository : IBookRepository 在RepositoryManager类中,我声明了private IRepository currentRepo; IRepoItem是由Book类实现的接口。 现在,当我尝试做这样的事情时: currentRepo = new BookRepository(); VisualStudio提供错误消息: 无法将类型’BookRepository’隐式转换为’IRepository’。 存在显式转换(您是否错过了演员?) 我尝试显式转换,但抛出了运行时exception…… 我知道(几乎可以肯定)它是一种叫做协方差的东西,这可能(可能)在.Net 4.0中解决了。 不幸的是我正在使用框架版本3.5编写,我无法改变它。 请给我一些建议 – 如何超支这个问题? 我想从RepoFactory获得currentRepo,它会产生几种存储库,具体取决于用户的需求。 我不知道这里是否允许链接,但是我在http://olgatherer.wordpress.com/上写了一些博客,我描述了应用程序创建。 我的英语不好,但我希望能理解我。 提前谢谢你的回答。 最好的问候,skrzeczowas