【问题标题】:Indirectly having interface property间接具有接口属性
【发布时间】:2023-01-01 17:16:15
【问题描述】:

我有一个看起来像这样的界面:

interface IName
    {
        string Name { get; set; }
    }

和这样的类:

public class ClassN
    {
        public int N { get; set; }
    }

这个N类中的N是一个int,接口需要一个字符串Name。 我希望将 int N 转换为字符串并在界面中计为 Name

所以当我执行 T.name 时,我得到了 .N.toString()。

这可能吗?

Name = N.ToString();

例子:

N = 2;Name = 2;(但作为字符串)

【问题讨论】:

  • 是的..有可能...你试过了吗?
  • 我怎么做?
  • 你想要一个姓名是一个整数?那没有意义。你能edit你的帖子有一个更具体的例子吗?您似乎违背了接口的理念。为什么你有一个叫做N的属性?它必须被称为Name
  • 你如何实现 Name 属性?你能分享那个代码吗?
  • @Chetan 实施者?类中的内容不是实现吗?

标签: c#


【解决方案1】:

您可以使用显式接口实现:

public class ClassN : IName
{
    string IName.Name
    {
         get { return N.ToString(); }
         set{ if(int.TryParse(value, out int i)) N = i; }
    }
    
    public int N { get; set; }
}

【讨论】:

    【解决方案2】:

    您可以使用通用配置。

    interface IName<T>
    {
        T Name { get; set; }
    }
    

    如果你想要一个铸造相关的配置,你可以使用 object.

    interface IName
    {
        object Name { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-29
      • 2012-05-08
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 2019-12-06
      • 2021-09-26
      • 1970-01-01
      • 2015-05-06
      相关资源
      最近更新 更多