gpt4 book ai didi

c# - 一个好的做法是留下一个空的界面吗?

转载 作者:行者123 更新时间:2023-11-30 19:12:03 24 4
gpt4 key购买 nike

这次,我要出一道数学题。我计划有一个字典,其中键是 Levels enum {Easy, Medium, Hard} 并且值应该包含一些关于如何创建问题的配置。

例如:

BinaryProblemConfiguration
+ Bound1 : Bound<int>
+ Bound2 : Bound<int>

边界有两个属性:最小值和最大值。

其他类型的问题不需要Bounds,但需要其他数据。

所以,我想创建一个名为 IConfiguration 的接口(interface)。

public interface IConfiguration {}

具体的配置应该是:

public class BinaryProblemConfiguration : IConfiguration
{
public Bound Bound1 {get;set;}
public Bound Bound2 {get;set;}
}

public class AnotherProblemConfiguration : IConfiguration
{
// other stuff
}

想法是有一个名为 ConfigurationLevels 的字典。这是将界面留空的好习惯还是意味着我的设计有问题?

最佳答案

.NET Framework 设计指南将此称为“标记”接口(interface),并明确表示这是一个坏主意。他们建议改用自定义属性。

Avoid using marker interfaces (interfaces with no members).

Custom attributes provide a way to mark a type. For more information about custom attributes, see Writing Custom Attributes. Custom attributes are preferred when you can defer checking for the attribute until the code is executing. If your scenario requires compile-time checking, you cannot comply with this guideline.

http://msdn.microsoft.com/en-us/library/ms229022.aspx

public sealed class ConfigurationAttribute : Attribute {

}


[ConfigurationAttribute]
public class AnotherProblemConfiguration : IConfiguration
{
// other stuff
}

关于c# - 一个好的做法是留下一个空的界面吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9039784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com