小编Cr3*_*0rX的帖子

C#generic cast

我有一个名为的界面 IEditor

public interface IEditor<T> 
    where T: SpecialObject
Run Code Online (Sandbox Code Playgroud)

SpecialObject 是一个抽象类.

这是我的问题:

我有一个继承自的类SpecialObject和一个实现此IEditor接口的视图

public class View : IEditor<Person>
Run Code Online (Sandbox Code Playgroud)

现在,我必须检查View是否实现 IEditor<SpecialObject>

Boolean isEditor = View is IEditor<SpecialObject>
Run Code Online (Sandbox Code Playgroud)

IEditor总是假的

有没有可能检查View是否IEditor<SpecialObject>

编辑

我有一个方法,在引发结束事件时调用.传递给此方法的视图可以实现IEditor,但它们也可以实现另一个接口.在示例IView中

  void Closing(object sender, MyEventArgs e)
  {
      if(e.Item is IView)
      {
          // DO some closing tasks

          if(e.Item is IEditor<SpecialObject>)          // always false
          {
              // Do some special tasks
              var editor = e.Item as IEditor<SpecialObject>;

              var storedEditObect = editor.StoredObject;

              // more tasks
          }
      } else …
Run Code Online (Sandbox Code Playgroud)

c# generics inheritance

11
推荐指数
2
解决办法
967
查看次数

C#Prism navigationProblem

我有两个地区.导航区域和主要区域.

我的导航区域包含两个调用RequestNavigate方法的按钮.第一个按钮加载没有任何参数的视图

this.tRegionManager.RequestNavigate(RegionNames.MainRegion, ViewNames.VInfoMainViewUri);
Run Code Online (Sandbox Code Playgroud)

第二个按钮应该使用一些参数加载相同的视图

  this.tRegionManager.RequestNavigate(RegionNames.MainRegion, new Uri(ViewNames.VInfoMainViewUri.OriginalString + "" + query.ToString(), UriKind.Relative));
Run Code Online (Sandbox Code Playgroud)

如果没有加载视图,这可以正常工作.如果加载了任何视图,则单击任何按钮都不会导致任何操作.

我试图从我的区域中删除每个活动视图,但这会导致错误

IViewsCollection col = tRegionManager.Regions[args.RegionName].Views;
foreach (var obj in col)
{
   tRegionManager.Regions[args.RegionName].Remove(obj);

}
Run Code Online (Sandbox Code Playgroud)

该区域不包含指定的视图.参数名称:view

我该如何解决这个问题呢?

.net c# navigation prism

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

标签 统计

c# ×2

.net ×1

generics ×1

inheritance ×1

navigation ×1

prism ×1