Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法在继承模型的基类中实现委托_C# - Fatal编程技术网

C# 有没有办法在继承模型的基类中实现委托

C# 有没有办法在继承模型的基类中实现委托,c#,C#,我目前在物理单位课程中工作,以便能够跟踪和转换单位并执行一些计算,而不必考虑值是否在正确的单位中 我的基类包含一个委托签名: /// <summary> /// Delegate signature definition to keep track of convervions /// </summary> /// <param name="toSelectedType"></param> public delegate void Con

我目前在物理单位课程中工作,以便能够跟踪和转换单位并执行一些计算,而不必考虑值是否在正确的单位中

我的基类包含一个委托签名:

 /// <summary>
 /// Delegate signature definition to keep track of convervions
 /// </summary>
 /// <param name="toSelectedType"></param>
 public delegate void ConvertUnitsDelegate(object toSelectedTypeOrUnit);
//
///用于跟踪对流的委托签名定义
/// 
/// 
public delegate void ConvertUnitsDelegate(对象为所选类型或单元);
上述委托中的实例是在concret类中创建的

 /// <summary>
 /// Definition of the Static delegate to perform unit changes
 /// </summary>
 public static ConvertUnitsDelegate ConvertAllDistancesMethod;
//
///用于执行单元更改的静态委托的定义
/// 
公共静态转换单元LEGATE CONVERTALL DISTANCE方法;
我当前的问题是,如果我的一些同事想要实现他们自己的单元具体类 他们必须在我的实现中查看并检查我是否有来自此委托的实例

所以我想问一下,是否有可能在接口中定义委托签名,这将强制从基类和接口继承

因此,如果有人能帮忙,我们将不胜感激

问候


我有一个抽象类叫做UnitBase

 public abstract class UnitBase<DerivedClass> where DerivedClass : UnitBase<DerivedClass>, new()
{

    /// <summary>
    /// Delegate signature definition to keep track of convervions
    /// </summary>
    /// <param name="toSelectedType"></param>
    public delegate void ConvertUnitsDelegate(object toSelectedTypeOrUnit);
公共抽象类UnitBase,其中DerivedClass:UnitBase,new()
{
/// 
///用于跟踪对流的委托签名定义
/// 
/// 
public delegate void ConvertUnitsDelegate(对象为所选类型或单元);
}

这是我的具体类“距离”的基类:

公共类距离:UnitBase
{
/// 
///用于执行单元更改的静态委托的定义
/// 
公共静态转换单元LEGATE CONVERTALL DISTANCE方法;
}
在类距离中,我声明了一个委托实例,这种方法是有效的,但我想定义一些额外的东西,比如:

     public class Distance:UnitBase<Distance>,IAdditionalInterface
{
    /// <summary>
    /// Definition of the Static delegate to perform unit changes
    /// </summary>
    public static ConvertUnitsDelegate ConvertAllDistancesMethod;
}
公共类距离:UnitBase、IAdditionalInterface
{
/// 
///用于执行单元更改的静态委托的定义
/// 
公共静态转换单元LEGATE CONVERTALL DISTANCE方法;
}
这将强制执行,如果有人希望通过抽象基类继承,则必须声明前面提到的delagate签名的实例


感谢您提出的问题

如果我的一些同事想要实现他们自己的单元具体类,他们必须在我的实现中看到,并检查我是否有来自此代表的实例
-为什么,这意味着什么?我的意思是,他们必须看到我如何在一个具体类中使用基类的实现,我想要一个直观的基础课你确定你需要一个代表吗?为什么不能在UnitBase中创建一个抽象方法,返回void并将对象作为参数?这不会迫使任何实现UnitBase的开发人员编写他们的方法吗?我想看看你对这个委托的目标是什么,因为它不是很清楚。@SeanSkelly我处理委托的方法是在我的派生对象的每个实例中触发一个函数(在本例中是一个名为ConvertTo的函数)class@DonMiguelSan但这似乎正是在抽象基类中使用抽象方法对您所起的作用。如果您定义了
公共抽象void ConvertTo(对象到所选类型或单位)对象
,而应该使用枚举来表示要转换为的单元类型。)
如果我的一些同事想要实现他们自己的单元具体类,他们必须在我的实现中看到,并检查我是否有来自此委托的实例
-为什么,这意味着什么?我的意思是他们必须看到我如何在一个具体的类中使用基类的实现,我想要一个直观的基类你确定你需要一个委托吗?为什么不能在UnitBase中创建一个抽象方法,返回void并将对象作为参数?这不会迫使任何实现UnitBase的开发人员编写他们的方法吗?我想看看你对这个委托的目标是什么,因为它不是很清楚。@SeanSkelly我处理委托的方法是在我的派生对象的每个实例中触发一个函数(在本例中是一个名为ConvertTo的函数)class@DonMiguelSan但这似乎正是在抽象基类中使用抽象方法对您所起的作用。如果您定义了
公共抽象void ConvertTo(对象到所选类型或单位)对象
,而应该使用枚举来表示要转换为的单位类型。)
     public class Distance:UnitBase<Distance>,IAdditionalInterface
{
    /// <summary>
    /// Definition of the Static delegate to perform unit changes
    /// </summary>
    public static ConvertUnitsDelegate ConvertAllDistancesMethod;
}