【问题标题】:ASP.Net Calling method from another namespaceASP.Net 从另一个命名空间调用方法
【发布时间】:2016-08-18 07:23:05
【问题描述】:

我有两个项目,第一个具有 ClassLibraryServer 命名空间和输出方法,如下所示:

   namespace ClassLibraryServer
   {
   public class Output
   {
      public static void Card(tblCard card, int myProperty)
      {
        if (kort.fltNr.Length != 6)
            return;

        using (myDataContext db = new myDataContext(ClassLibrary.Settings.Instance.SqlS))
        {
            tblReader[] readers = (from row in db.tblReader  
                                   where !row.fltOffline
                                   select row).ToArray();


            bool blocked = (db.tblCardBlocked.Where(b => b.fltProperty == myProperty && b.fltCard == card.id).FirstOrDefault() != null);

            foreach (tblReader reader in readers)              
            {
                Card(card, reader, blocked);
            }
        }
      }
    }
    }

foreach循环中的Card方法调用了另外一个方法(重载第一个card方法),它有三个参数,将数据插入到一个sql表中,这里就不分享了,因为太占空间了。

现在我想在另一个具有命名空间 ExtControlModule 的项目中调用上述方法:

          namespace ExtControlModule

          {
            public class TimeModule
            {
             using (ModuleDataContext dbsys = new ModuleDataContext(ClassLibrary.Settings.Instance.SqlS)) {
                var loungee = (from tblLounge in dbsys.tblLounges
                               select tblLounge).ToList();

                 var lasaresFas = 0;
                 foreach (var LoungeRow in loungee)
                 {
                 lasaresFas= Convert.ToInt32(dbsys.tblLasares.FirstOrDefault(f => f.id == LoungeRow.fltCardreader).fltproperty);



                 tblCard cardLoading = dbsys.tblCard.FirstOrDefault(t => t.id == res.fltCardnumber);
                 Output.Card(cardLoading, lasaresFas);
                 }
             }
          }

现在,当我想在 ExtControlModule 中为 Output.Card 分配参数时,Output.Card 中的 cardLoading 参数出现以下错误:

参数 !: 无法从 'ExtControlModule.tblCard' 转换为 ClassLibrary.db.tblCard'

ClassLibrary 是同一解决方案中的另一个项目,其中包含一个带有 SqlS 属性的公共类设置,有助于连接到 SQL 数据库。

由于我是 ASP.NET 和 Sql 的新手,为此苦苦挣扎了很多天,希望我的问题足够清楚。

【问题讨论】:

  • 尝试使用完全限定的命名空间
  • 你显然有两个同名的类tblCard。仅仅因为它们具有相同的名称,并不意味着它们可以互换。您需要进行更改,以便您展示的两种方法(可能还有其他方法)就哪个 tblCard 类是相关的以及它属于哪个程序集达成一致。真的与命名空间无关。

标签: c# sql asp.net database linq-to-sql


【解决方案1】:

调用方法

ClassLibraryServer.Output.Card(cardLoading, lasaresFas);

【讨论】:

  • 是静态方法,不需要创建实例。他们在他们的问题中包含了一条错误消息,(应该)清楚地说明问题是什么。他们要么忽略错误消息的内容,要么不理解它。这段代码都没有解决这些问题。
  • 我已经做出改变了 :)
  • 我使用 ClassLibraryServer 作为指令,所以没关系,@Damien_The_Unbeliever tblCard 是表的名称,而 cardLoading 是该表的对象。如果我将鼠标悬停在 tblCard 上,它会指向 ClassLibrary.db.tblCard,其中 db 是数据库模块。
  • @S.A.Khalili - 但错误消息是说当你调用dbsys.tblCard.FirstOrDefault(...);时,你得到的是ExtControlModule.tblCard不是一个@ 987654324@。正如我几个小时前在您的问题下方评论的那样,您有 两个 tblCard 课程,并且您正在尝试在需要另一个的地方使用一个。
猜你喜欢
  • 2019-06-02
  • 1970-01-01
  • 2021-01-06
  • 2016-06-22
  • 1970-01-01
  • 2017-01-04
  • 2011-09-28
  • 2021-01-14
  • 2013-05-24
相关资源
最近更新 更多