作为一个初学者/中级开发人员,我遇到一个问题,因为我使用更多的OOP原则,因为我的项目越来越大,抽象越来越多.就像我有多个项目或类库时,我不知道如何命名它们.我看到的东西从xxx.Core到xxx.Main或者甚至看过xxx.BLL和xxx.DAL.在浏览其他人时,我已经看到xxx.Services和xxx.Data用于他们的库和命名空间.
那么一旦解决了我的DTO是什么?在那个领域我见过xxx.DTO,xxx.Entities,xxx.Props.
命名库,方法,接口等的一些好的指导方针......在编写代码时,越来越多的人会在他们接下来之后了解事情.
在我正在研究的类库中,我有一个具有许多属性的类,所以我重构它由一些较小的内部类组成.但是,现在我将这些类标记为内部类,当我将它们作为原始类的公共属性公开时,代码将无法编译.例如:
public class TheOriginalClass
{
public MyInternalClass InternalClassProperty { get; set; }
}
// It doesn't make sense to use this by itself
internal class MyInternalClass
{
public string InterestingProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想在程序集中封装这些辅助类,因为它们在其他地方实例化是没有意义的.
有没有办法实现这个目标?
我尝试重新抛出异常,但它不起作用.我在Visual Studio中得到'Exception is unhandled'错误.
public KeyValueConfigurationCollection getMyAppSetting()
{
Configuration config;
ConfigurationFileMap configFile;
try
{
configFile = new ConfigurationFileMap(ConfigurationManager.OpenMachineConfiguration().FilePath);
config = ConfigurationManager.OpenMappedMachineConfiguration(configFile);
AppSettingsSection MyAppSettingSection = (AppSettingsSection)config.GetSection("xxx/appSettings");
MyAppSettingSection.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToRoamingUser;
return MyAppSettingSection.Settings;
}
catch (Exception ex)
{
logger.Fatal("...");
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
此方法属于类库,我从控制台应用程序调用它.请帮我.
谢谢.
底线是创建自定义FTP身份验证提供程序.为了做到这一点,必须从IFtpAuthenticationProvider接口继承,然后在GAC中注册该程序集.之后,需要在IIS的FTP设置中注册程序集.
为了实现这一目标,我必须使用数据库,该数据库将我的用户信息保存在我们之前开发的自定义成员资格和角色提供程序的数据库中.所以,这意味着我必须使用本地类库app.config文件并阅读它ConfigurationManager.OpenMappedExeConfiguration().我从那里读取连接字符串,我甚至能够动态地将它提供给Linq-To-Sql类.没问题.
接下来,我尝试创建一个继承自SqlMembershipProvider的类,以便我可以使用它自己的系统来解密用户的密码.但是,问题是它必须machineKey从配置中读取值.您可以为SqlMembershipProvider提供自定义配置的唯一方法是使用它的Initialize方法(无论如何我们都不打算在我们的代码中使用它).但无论如何我试过并失败了.我已经能够提供自定义成员资格设置,但不能提供machineKey设置.
所以,我决定变得激进.我说:我有decryptionKey来自machineKey所以我会尝试手动解密密码.
到目前为止,我已尝试使用RijndaelManaged:
private string UnEncodePassword(string encodedPassword, string secretKey)
{
string password = encodedPassword;
var keyBytes = new byte[16];
var secretKeyBytes = Encoding.UTF8.GetBytes(secretKey);
Array.Copy(secretKeyBytes, keyBytes, Math.Min(keyBytes.Length, secretKeyBytes.Length));
RijndaelManaged rm = new RijndaelManaged
{
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7,
KeySize = 128,
BlockSize = 128,
Key = keyBytes,
IV = keyBytes
}; …Run Code Online (Sandbox Code Playgroud) 我在构建我应该做的事情上有些麻烦,以促进我的类库和使用它的程序之间的通信 - 在这种情况下,Windows Forms应用程序:
// Class in library
class Foo()
{
public Foo(){}
public void DoWork()
{
log("Working...");
}
private void log( string s )
{
Console.Writeline(s);
}
}
// Forms App
class Form1()
{
public Form1()
{
Foo MyFoo = new Foo();
MyFoo.DoWork();
}
}
Run Code Online (Sandbox Code Playgroud)
由于在winforms应用程序中没有任何内容监听控制台,因此对log()的调用不会显示任何内容.有没有办法动态覆盖Foo.Log方法,或者可能将具有该签名的方法分配给更适合运行时表单应用程序的Foo对象?
谢谢!
在C#中,我创建了一个ClassLibrary,它有一个Namespace和一个Class.我保存并构建它.在其他项目中,当我使用它时,我通过浏览到.dll位置将其添加到我的引用中.
但问题是它的名字没有出现在Intellisense中.即当我:using ...我的DLL没有显示..我正在将库导入ConsoleApp.App和库目标框架都是.NET Framework 4.0,我制作了它们的Assembly 4.0.0.0,所以它们完全相同.
有什么设置或我缺少的东西?怎么能让它弹出来?
我正在使用VS2010 Professional
谢谢您的帮助
我可以在ac#类库中执行此操作来处理在执行类库代码本身期间可能发生的异常吗?我是编写类库和异常处理的新手.请指教.
private void MethodName(String text)
{
try
{
..............
..............
..............
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
我在google和stackoverflow中搜索过,但是没有找到任何文章我是否允许以这种方式处理类库中的异常,或者是否不建议这样做.但它的确有效.可能是一个愚蠢的问题,但我有这个疑问.
谢谢.
因此,我正在创建一个类库,用于处理用户信息,如用户名,密码等.我想这样做,以便我可以使用我的任何Web应用程序引用此库,而不必不断重写用户信息部分.
在,用户信息类库,我想处理登录.我之前在app_code中完成了这项工作,它是使用的web项目的一部分HttpContext.Current.Session.但是,当我尝试在我的类库(甚至是using System.Web)中使用它时,它会抛出一个编译错误,说明在此上下文中不存在HttpContext.我怎样才能访问它?
我正在尝试创建一个.NET 4.6.1类库,并使用此nuget包:
https://www.nuget.org/packages/NLua/
当我点击安装时,我收到以下消息:
Package restore failed. Rolling back package changes for 'ClassLibrary1'.
Run Code Online (Sandbox Code Playgroud)
如果我在同一解决方案中尝试使用Web应用程序进行相同的安装,则安装成功完成.
class-library nuget-package nlua .net-4.6.1 visual-studio-2017
我有一些问题试图获得代码优先的Entity Framework 6.0来构建迁移Microsoft.SQLServer.Types.我还是继续说:
空间类型和函数不适用于此提供程序,因为无法找到程序集"Microsoft.SqlServer.Types"版本10或更高版本.
我看到他们一直在谈论跑步:
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
Run Code Online (Sandbox Code Playgroud)
或类似的global.asax.我需要在一个处理我的应用程序的数据层的类库中运行它,因此没有启动事件.
我投入了
[assembly: PreApplicationStartMethod(typeof(Test.Startup), "Start")]
namespace Test
{
public class Startup
{
public static void Start()
{
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这没有任何效果.有人有任何其他想法吗?
谢谢
克里斯
class-library ×10
c# ×6
.net ×3
.net-4.6.1 ×1
c#-4.0 ×1
code-first ×1
encryption ×1
exception ×1
httpcontext ×1
intellisense ×1
internal ×1
namespaces ×1
nlua ×1
public ×1
session ×1
sql-server ×1
system.web ×1
winforms ×1