相关疑难解决方法(0)

为什么我不能声明C#方法虚拟和静态?

我有一个辅助类,它只是一堆静态方法,并且想要辅助类的子类.某些行为是独特的,具体取决于子类,所以我想从基类调用虚方法,但由于所有方法都是静态的,我无法创建普通的虚方法(需要对象引用才能访问虚方法).

有没有办法解决?我想我可以使用单例.. HelperClass.Instance.HelperMethod()并不比HelperClass.HelperMethod()差.布朗尼指出任何可以指出支持虚拟静态方法的语言的人.

编辑:好的,我疯了.谷歌搜索结果让我觉得我不是那里的.

c# oop

50
推荐指数
7
解决办法
5万
查看次数

为什么C#(或.NET)不允许我们在接口中放置静态/共享方法?

为什么C#(或.NET)不允许我们在接口中放置静态/共享方法?

看似从这里重复.但我的想法有点不同,我只是想为我的插件(接口)添加一个帮助器

不应该C#至少允许这个想法吗?

namespace MycComponent
{

    public interface ITaskPlugin : ITaskInfo
    {
        string Description { get; }
        string MenuTree { get; }
        string MenuCaption { get; }

        void ShowTask(Form parentForm);
        void ShowTask(Form parentForm, Dictionary<string, object> pkColumns);

        ShowTaskNewDelegate ShowTaskNew { set; get; }
        ShowTaskOpenDelegate ShowTaskOpen { set; get; }        

        // would not compile with this:
        public static Dictionary<string, ITaskPlugin> GetPlugins(string directory)
        {

            var l = new Dictionary<string, ITaskPlugin>();

            foreach (string file in Directory.GetFiles(directory))
            {
                var fileInfo = new FileInfo(file); …
Run Code Online (Sandbox Code Playgroud)

c# interface helper design-rationale

8
推荐指数
2
解决办法
2672
查看次数

为什么C#不包含IParsable <T>或ITryParsable <T>?

编辑:显然这是不可能的,因为C#不允许接口中的静态方法.

显然,为您自己的解决方案实现以下接口会相当简单

public interface IParsable<T>
{
    T Parse(string s);
}

public interface ITryParsable<T> : IParsable<T>
{
    bool TryParse(string s, out T output);
}
Run Code Online (Sandbox Code Playgroud)

已经写解析未知类型化的用户输入数据的各种方式,我会发现有int,decimal等,等实现一个版本,这些接口必不可少的.

对我而言,包含在System命名空间中似乎是一件相当明显的事情.

显然事实并非如此.那么查看类是否"实现"这些接口的最佳方法是什么?

通过Duck Typing检查方法是否存在似乎是一个明智的选择,但是反射并不是非常高效.

c#

3
推荐指数
2
解决办法
721
查看次数

公共静态方法+接口

由于我们无法在接口中定义公共静态方法,这样的接口是否可以在具有public static的类中实现?

public interface IValidator
{
    bool IsValid(bool data);
}

public class MyValidator : IValidator
{
    public static bool IsValid(string data)
    {
        //code which returns bool
    }
}
Run Code Online (Sandbox Code Playgroud)

c# static interface

2
推荐指数
1
解决办法
1190
查看次数

标签 统计

c# ×4

interface ×2

design-rationale ×1

helper ×1

oop ×1

static ×1