我有一个由工具生成的部分类。
Foo.cs
public partial class Foo {
[SomeAttribute()]
public string Bar {get;set;}
}
我需要为Foo
实现以下界面,而不需要触及Foo.cs:
IFoo.cs
public interface IFoo {
string Bar {get;set;}
}
扩展Foo
也是一种选择,但重新实现Bar
属性不是。
可以这样做吗?
答案 0 :(得分:8)
是什么阻止您在另一个文件中再次执行此操作?
public partial class Foo : IFoo
{
}
由于Bar
属性已经存在,因此不需要重新实现它。
或在新班级
public class FooExtended : Foo, IFoo
{
}
同样,您不需要实现Bar
,因为Foo已经实现了它。
答案 1 :(得分:1)
你可以为Foo创建一个实现IFoo的部分类,但是Bar属性不公开,它将不起作用。
如果Bar属性是公开的:
partial class Foo
{
public string Bar { get; set; }
}
interface IFoo
{
string Bar { get; set; }
}
partial class Foo : IFoo
{
}
答案 2 :(得分:1)
由于Bar
是私有的,所以这就是您要找的内容:
public partial class Foo : IFoo
{
string IFoo.Bar
{
get
{
return this.Bar; // Returns the private value of your existing Bar private field
}
set
{
this.Bar = value;
}
}
}
无论如何,这是令人困惑的,如果可能应该避免。
编辑:好的,您已经更改了自己的问题,因此Bar
现已公开,因为Bar
始终在{{1}中实施,因此不再有问题}}