C# Property inheritance question
How do i inherit a property in c# from an interface and give that property other name on the class?
For example:
public interface IFoo
{
int Num {get;set;}
}
public class IFooCls : IFoo
{
int Ifoo.Num{get;set}
}
In this case, what the property name in the interface is also the same in the class. What i want is to give other property name on the class but still pointing to "N开发者_运维百科um" in the interface in this case. In VB, we can do it like this:
Public ReadOnly Property UserId() As String Implements System.Security.Principal.IIdentity.Name
Get
Return _userId
End Get
End Property
Here is a way to simulate what you are trying to do in C#
public interface Foo {
string Name {get;set;}
}
pubilc class Bar : Foo {
#region Foo implementation
public string Name {get{return UserName;} set{UserName = value;}}
#endregion //Foo implementation
public string UserName {get; set;}
}
If you inherit a property, you inherit it, name, type and all. There is no way to change the name.
If you want, you can write another property with a different name and call the inherited property from it (you still have to implement the original property).
See what you can do on this MSDN page.
The only way to achieve what you want (have a UserId
property and impelement IIdentity
) is to call IIdentity.Name
from it).
This will hide the IIdentity.Name
property from users of your class (unless they cast to IIdentity
):
public class myIdentity : IIdentity
{
public string IIdentity.Name {get; set;}
public string UserId
{
get
{
return IIdentity.Name;
}
set
{
IIdentity.Name = value;
}
}
精彩评论